我知道我可以单独发出一个更改表来将表存储从 MyISAM 更改为 InnoDB。
我想知道是否有一种方法可以快速将它们全部更改为 InnoDB?
原文由 Pentium10 发布,翻译遵循 CC BY-SA 4.0 许可协议
当表很大时,最好从控制台进行
转换为innodb.sh
#!/usr/bin/env bash
# Usage: ./convert-to-innodb.sh 'db' 'user' 'password' | mysql 'db' -u user -p password
set -eu
db="$1"
user="$2"
pass="$3"
sql="SET @DATABASE_NAME = '${db}';"
sql+="SELECT CONCAT('ALTER TABLE \`', table_name, '\` ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND \`ENGINE\` = 'MyISAM'
AND \`TABLE_TYPE\` = 'BASE TABLE'
ORDER BY table_name DESC;"
echo $sql | mysql -u${user} -p${pass} | tail -n +2
原文由 Antony Gibbs 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答1.8k 阅读