用于在 MYSQL 中将所有表和字段更改为 utf-8-bin 排序规则的脚本

2022-08-30 09:47:46

是否有我可以运行的或脚本可以更改数据库中所有表和字段中的默认排序规则?SQLPHP

我可以自己写一个,但我认为这应该是在这样的网站上随时可用的东西。如果我能在有人发布之前自己想出一个,我会自己发布。


答案 1

可以在单个命令(而不是148个PHP)中完成:

mysql --database=dbname -B -N -e "SHOW TABLES" \
| awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' \
| mysql --database=dbname &

你必须爱上命令行...(您可能需要使用 和 选项。--user--passwordmysql

编辑:避免外键问题,添加和SET foreign_key_checks = 0;SET foreign_key_checks = 1;


答案 2

我认为在PhpMyAdmin中通过两个步骤做到这一点很容易。
第 1 步:

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`,
 '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as stmt 
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'database_name'
ORDER BY 1

步骤 2:
此查询将输出一个查询列表,每个表一个。您必须复制查询列表,并将它们粘贴到命令行或PhpMyAdmin的SQL选项卡中才能进行更改。


推荐