我收到错误:
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='"
我尝试将这两个表手动更改为 utf8_general_ci,IMPLICIT
,但仍然出现错误。
有没有办法将所有表格转换为 utf8_general_ci,IMPLICIT
并完成?
最佳答案
您需要为每个表执行一个 alter table 语句。声明将遵循以下形式:
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]
现在要获取数据库中的所有表,您需要执行以下查询:
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="YourDataBaseName"
AND TABLE_TYPE="BASE TABLE";
所以现在让 MySQL 为你编写代码:
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE your_collation_name_here;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="YourDatabaseName"
AND TABLE_TYPE="BASE TABLE";
您可以复制结果并执行它们。我没有测试语法,但你应该能够弄清楚其余的。把它想象成一个小练习。
希望有帮助!
关于mysql - 如何将数据库中的所有表转换为一种排序规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859966/