すべての列のすべてのテーブルでこれらのステートメントを実行する必要があります。
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
MySQL内でこれを何らかの方法で自動化することは可能ですか?mysqldumpを避けたい
更新:リチャード・ブロノスキーは私に道を教えてくれました:-)
すべてのテーブルで実行する必要があるクエリ:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
他のすべてのクエリを生成するクレイジークエリ:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
1つのデータベースでのみ実行したかった。1つのパスですべてを実行するのに時間がかかりすぎていました。テーブルごとにフィールドごとに1つのクエリを生成していることが判明しました。また、テーブルごとに必要なクエリは1つだけでした(救助者とは異なります)。ファイルの出力を取得することは、私がそれを実現する方法でした。
ファイルへの出力を生成する方法:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';" > alter.sql
最後に、すべてのクエリを実行します。
mysql --user=user --password=secret < alter.sql
リチャード、ありがとう。あなたは男だ!