【发布时间】:2016-05-20 09:56:15
【问题描述】:
我需要将两个 MySQL 表上的字符集更改为 UTF8。最初我想出了以下查询,但我想知道这是否是更改具有外键的(实时)表上的字符集的安全方法。在我的开发环境中,我只使用了没有锁的“FOREIGN_KEY_CHECKS = 0”,但当时我并不关心完整性,而是使用实时系统。
LOCK TABLES
tags WRITE,
tags_lost WRITE;
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE myDB.exampleTable CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
SET FOREIGN_KEY_CHECKS = 1;
UNLOCK TABLES;
另一种选择是锁定表,删除外键,更改字符集,然后重新创建键,但我只是希望这个快捷方式也能正常工作。
【问题讨论】:
-
不想改成UTF8,想改成
UTF8mb4,please read why that is so