如何在mysql中一次更改多个表

时间:2014-09-22 10:17:51

标签: mysql database

我想更改数据库中存在的所有表的字符集。         要更改一个表的字符集,我可以将其执行为:

"alter table mydb.mytable1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_Ci;"

但我在我的数据库中有很多表格。数据库。         我们可以从information_schema表中读取的表列表。         但我不知道如何形成Exact查询,以便一次查询我可以一次更改所有表的字符集。

2 个答案:

答案 0 :(得分:0)

Alter Database

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;