更新字符集后MySQL表不存在

标签 mysql

在我的一张表上将字符集从 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/

相关文章:

mysql - SELECT 在 Node.js 中不起作用

mysql - 数据库设计: what fields are must for a user table in database?

mysql - 使用多对多 rails 连接查询

MySQL 复制 : Waiting to reconnect after a failed registration on master

MySQL IN 语句中不存在的值

MySQL 错误 1242 : Subquery returns more then 1 row

mysql - 从 mysql 表中获取产品摘要

php - 使用一到五个可变变量时未初始化的字符串偏移通知

mysql - 外键存在,我得到 MySQL 错误 : 1452: Cannot add or update a child row: a foreign key constraint fails

mysql 在where子句中显式引用table.column