web-dev-qa-db-ja.com

オペレーション(=)の照合(utf8mb4_unicode_ci、IMPLICIT)と(utf8mb4_general_ci、IMPLICIT)の不正な組み合わせ

このエラーが発生しました。

オペレーション(=)の照合(utf8mb4_unicode_ci、IMPLICIT)と(utf8mb4_general_ci、IMPLICIT)の不正な組み合わせ

「照合」を「utf8mb4_unicode_ci」に変更しました。その後、テーブルは切り捨てられ、行を再度インポートしました。それでも同じエラーが発生する

11
Michael42

参加しているテーブルに異なる照合順序があると思います。オペレーション=で違法な照合の組み合わせを使用しているという。

そのため、照合を設定する必要があります。例えば:

WHERE tableA.field COLLATE utf8mb4_general_ci = tableB.field

次に、=操作で同じ照合を設定しました。

テーブルに関する詳細情報を提供していないので、これは私が提供できる最高の擬似コードです。

10
MrApnea

結合クエリの場合、このクエリを使用してこのようなエラーを解決しました。

select * from contacts.employees INNER JOIN contacts.sme_info  
ON employees.login COLLATE utf8mb4_unicode_ci = sme_info.login

以前に次のクエリを使用すると、同じエラーが発生していました。

select * from contacts.employees LEFT OUTER JOIN contacts.sme_info  
ON employees.login = sme_info.login

Error: Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

照合についてはあまり知りませんが、両方のテーブルが文字セットの異なる規則に従っているようです。したがって、等号演算子は実行できませんでした。そのため、最初のクエリでは、収集および結合する照合セットを指定しました。

4