我想更改数据库中存在的所有表的字符集。 要更改一个表的字符集,我可以将其执行为:
"alter table mydb.mytable1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_Ci;"
但我在我的数据库中有很多表格。数据库。 我们可以从information_schema表中读取的表列表。 但我不知道如何形成Exact查询,以便一次查询我可以一次更改所有表的字符集。
答案 0 :(得分:0)
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
注意:使用
"utf8_unicode_ci"
代替"utf8_general_ci"
因此,如果您无法使用Alter DB执行此操作,则必须为每个表单独运行此操作
答案 1 :(得分:0)
-- https://stackoverflow.com/a/39465494/819417
SELECT concat('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_db_name'
然后复制/粘贴所有结果,并使用数据库工具或脚本语言逐个运行它们。
要在添加它们时修复未来的表,也请运行它:
ALTER DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;