在我的一张表上将字符集从 utf8
转换为 utf8mb4
后,更改将按预期工作,直到 MySQL 服务器重新启动。重新启动后,我得到 [42S02][1146] Table 'db.myTable' does not exit
每次我尝试更新字符集时都会发生这种情况。这是我一直在运行的更改:
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;
我哪里出错了?转换字符集时,我还应该做其他事情吗?有没有可能的方法可以从中恢复而无需恢复备份?
最佳答案
我知道我哪里错了。
运行SHOW ENGINE INNODB STATUS;
显示外键导致了问题,因为另一个表具有不同的字符集。
更改所有表的字符集现在已经解决了我的问题。
关于更新字符集后MySQL表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56719072/