在我的一张表上将字符集从utf8
转换为utf8mb4
之后,更改将按预期进行,直到重新启动MySQL服务器为止。重新启动后,我得到[42S02][1146] Table 'db.myTable' doesn't exist
每次我尝试更新字符集时都会发生这种情况。这是我一直在运行的更改:
LOCK TABLES myTable WRITE;
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE myTable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET FOREIGN_KEY_CHECKS = 1;
UNLOCK TABLES;
我要去哪里错了?转换字符集时,我还应该做些其他事情吗?是否有任何可能的方法可以从中恢复而无需还原备份?
答案 0 :(得分:0)
我弄清楚哪里出了问题。
运行SHOW ENGINE INNODB STATUS;
表明,由于另一个表具有不同的CHAR SET,因此FOREIGN KEY导致了该问题。
更改所有表的CHAR SET现在已经解决了我的问题。