提问人:Tut budet Ima 提问时间:7/24/2023 更新时间:7/24/2023 访问量:29
无法更改数据库的字符集
Cant change charset of database
问:
现在我的数据库有字符集utf8mb3。我想把它改成utf8mb4。对于这个任务,我创建了一个脚本,用于创建 SQL 脚本,并执行此操作。此脚本可以生成如下行:
ALTER DATABASE `database_name` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
ALTER TABLE `database_name`.`table1` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `database_name`.`table2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
...
ALTER TABLE `database_name`.`table1` CHANGE `column1` `column1` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
ALTER TABLE `database_name`.`table1` CHANGE `column2` `column2` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;
ALTER TABLE `database_name`.`table1` CHANGE `column3` `column3` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
...
我意识到,我在外键和唯一键方面有问题(我认为),并将这些行添加到我生成的脚本中:
SET SESSION FOREIGN_KEY_CHECKS = 0;
SET SESSION UNIQUE_CHECKS = 0;
...
SET SESSION FOREIGN_KEY_CHECKS = 1;
SET SESSION UNIQUE_CHECKS = 1;
外键的问题消失了,但我仍然有这样的唯一键错误:
ERROR 1062 (23000) at line 14: Duplicate entry 'some_id' for key 'table1.column1'
我可以设置一些变量来忽略此类错误吗?我能用它们做什么?
答: 暂无答案
评论
some_id
SHOW CREATE TABLE
SHOW CREATE TABLE
SHOW CREATE TABLE table1;