【问题标题】:MySql - Error Code: 1932. Table doesn't exist in engineMySql - 错误代码:1932。引擎中不存在表
【发布时间】:2020-05-09 18:45:29
【问题描述】:

将枚举字段添加到现有表后,我在 mysql 重新启动时收到以下错误。锁定表并仅修复完整的数据库还原问题,因为我也无法删除表。

Error Code: 1932. Table 'users' doesn't exist in engine

我的表格和数据如下:

CREATE TABLE `users` (
  `id` char(36) NOT NULL,
  `name` varchar(191) NOT NULL,
  `email` varchar(191) NOT NULL,
  `password` varchar(191) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
);

INSERT INTO `users` VALUES 
(
    '11111111-1111-1111-1111-111111111111',
    'John Doe',
    'user@email.com',
    'password',
    NOW(),
    NOW()
);

上面的表格一直有效,直到下面的行被执行并且mysql被重新启动。

ALTER TABLE users ADD `role` enum('test1', 'test2') AFTER `password`

我还对a前后的表结构做了一个diff。仅添加注释行并锁定表格。

CREATE TABLE `users2` (
  `id` char(36) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `role` enum('test1','test2') COLLATE utf8mb4_unicode_ci DEFAULT NULL, -- only diff
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users1_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

这就是奇怪的地方。下面的行将角色添加到表的末尾并且不锁定表。

ALTER TABLE users ADD `role` enum('test1', 'test2'); -- AFTER `password`

似乎 AFTER 是问题所在。如果我尝试不同的位置也没关系。

任何建议将不胜感激。

【问题讨论】:

  • 什么版本的 MySQL 或 MariaDB?
  • 我很困惑——你问的是“锁定”桌子吗?还是关于 1932 年的错误?在ALTER...AFTER...之后或ALTER ... (on end)之后是否出现错误?

标签: mysql docker mariadb


【解决方案1】:

您还可以在添加列时分配默认值。

ALTER TABLE users ADD `role` enum('test1', 'test2') DEFAULT 'test1' AFTER `password`;

因此,NULL 值将不允许,所有行都将分配有 'test1'

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 2017-12-07
    • 2016-12-10
    • 2016-02-23
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2020-03-18
    相关资源
    最近更新 更多