如何将数据库中的所有表转换为一个排序规则?

我收到错误消息:

操作’=’的归类(utf8_general_ci,IMPLICIT)和(utf8_unicode_ci,IMPLICIT)的非法混合

我尝试将两个表手动更改为,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";

您可以复制结果并执行它们。我还没有测试语法,但是您应该可以弄清楚其余的语法。认为这是一个小练习。

希望有帮助!

以上是 如何将数据库中的所有表转换为一个排序规则? 的全部内容, 来源链接: utcz.com/qa/412274.html

回到顶部