私は、恐ろしい「照合の違法な組み合わせ」エラーに対する答えを探すために半日を費やしました。データベースの一部の列が特に照合されていないことがわかりましたutf8_unicode_ci 。 mysqlはこれらの列を暗黙的に照合したようですutf8_general_ci 。
具体的には、「SHOW CREATE TABLE table1」クエリを実行すると、次のようなものが出力されました。
| table1 | CREATE TABLE table1
(id
int(11)NOT NULL、col1
varchar(4)CHARACTER SET utf8 NOT NULL、col2
int(11)NOT NULL、PRIMARY KEY(photo_id
、tag
))ENGINE =InnoDB DEFAULT CHARSET =utf8 COLLATE =utf8_unicode_ci |
'col1' varchar(4)CHARACTER SET utf8 NOT NULLの行に注意してください。 照合が指定されていません。次に、次のクエリを実行しました:
ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4)CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;
これにより、「照合の不正な組み合わせ」エラーが解決されました。これが他の誰かに役立つことを願っています。