次のクエリを実行して、テーブルの照合とフィールドの照合が異なるデータベーステーブルから別のデータベーステーブルにデータを移動しようとしています。
INSERT INTO `db1`.`my_table` SELECT * FROM `db2`.`my_table` WHERE 1 COLLATE 'latin1_swedish_ci';
これにより、常に次のエラーが発生します。
COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'binary'
テーブルは両方のデータベースの文字セット「latin1」であるため、エラーで「バイナリ」と表示されている理由がわかりません。
照合しないと、通常の「照合の違法な組み合わせ」エラーが発生します。
SQL error #1267 : Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
正しく機能するように、このようなクエリを構成するにはどうすればよいですか?
クエリごとにこれを行う代わりに、クエリファイルを実行する前に文字セットと照合を設定できればさらに良いでしょう。私にいくつかの頭痛を真剣に救うだろう!