11

このエラーが発生する理由を特定するためにあなたの助けが必要です

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

手順は昨日まで正常に機能していましたが、今日は不正な照合の組み合わせのエラーが発生し始めました。私は自分のデータベースのすべてのテーブルをチェックしましたが、すべてのテーブルとその列は 1 つの文字セットと照合、つまり utf8 utf8_unicode_ci にあります。

同じ構造を持つ別のスキーマを作成し、同じクエリを実行しようとしましたが、元のスキーマでは正常に動作しませんでした。

誰でもこれについて意見を提供できますか?なぜそんなに起こっているのですか?

4

4 に答える 4

8

私は同じ問題を抱えていましたが、テーブルには同じ照合順序があることを発見しましたが、列にはありませんでした。mysqlyog の試用版をダウンロードして、alter table で hide language options... のチェックを外します。

于 2011-07-20T07:41:35.657 に答える
4

concat 関数の各パラメータを変換する必要があります。

CONCAT(CONVERT(field_A USING utf32), CONVERT(field_B USING utf32))

または、問題を抱えている機能はどれですか。

于 2014-07-08T07:34:02.793 に答える
4

私の場合、それは愚かなmysqlワークベンチが原因でした-スキーマから(いくつかのメタデータなどに)デフォルトの照合をプロシージャに追加し、プロシージャ内の何かを別の照合に照合すると、この例外が発生します。

正しい(手順で使用されるもの)照合をスキーマに設定し、手順を再編集して変更を適用する必要があります(再保存または再作成する必要があります)。これですべて問題ありません

于 2012-11-16T16:20:42.140 に答える
0

私の問題は同じでしたが、私の場合、SQLステートメントを使用する前に変換を使用するだけで十分でした-phpで

iconv(...)
于 2015-07-27T09:34:48.170 に答える