![](/img/trans.png)
[英]MySQL phpMyAdmin: Error #1932 - Table doesn't exist in engine
[英]MySql - Error Code: 1932. Table doesn't exist in engine
在向現有表中添加枚舉字段后,我在重新啟動 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`
我還對前后的表結構做了一個差異。 僅添加帶有注釋的行並鎖定表。
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 是問題所在。 如果我嘗試不同的位置也沒關系。
任何建議,將不勝感激。
您還可以在添加列時分配默認值。
ALTER TABLE users ADD `role` enum('test1', 'test2') DEFAULT 'test1' AFTER `password`;
因此,不允許使用 NULL 值,所有行都將分配給'test1' 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.