web-dev-qa-db-ja.com

MySQL:照合順序の違法な組み合わせ

私は試しました ストアドプロシージャを使用してインデックスを作成します で、次のエラーが発生しました:

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and 
                    (utf8_unicode_ci,IMPLICIT) for operation '='

行番号やその他のデバッグのヒントはありません。

  • このエラーをデバッグする最良の方法は何ですか?
  • エンコードの不整合を回避するための適切なガイドラインはありますか?
7
Adam Matan

試行錯誤の末、COLLATEを適用する方法と場所を学びました。

次のような変換された行:

SELECT SOMETHING
FROM SOMEWHERE
WHERE table_schema = given_database
AND   table_name   = given_table
AND   index_name   = given_index;

に:

SELECT SOMETHING
FROM SOMEWHERE
WHERE table_schema COLLATE utf8_unicode_ci = given_database
AND   table_name   COLLATE utf8_unicode_ci = given_table
AND   index_name   COLLATE utf8_unicode_ci = given_index;
4
Adam Matan