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

标签 mysql sql

我收到错误:

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/

相关文章:

sql - Rails Postgres 查询,仅选择出现在所有具有关联的搜索参数中的项目

mysql - 需要 2 个表的组合不同值

php - 显示 $_SERVER ['PHP_SELF' 之后选择的选项]

php - MySQL 不是有效资源

mysql - 单个 SQL 查询

sql - 从 SQLAlchemy 中的文件执行 SQL

mysql - 在不使用临时表的情况下选择不同的记录

php - 登录表单无输出

php - 如何构建 'related questions' 引擎?

php - 当 php/mysql if 语句为真时播放声音片段?