ホームページ  >  記事  >  データベース  >  MySQL の「不正な照合順序の組み合わせ」エラーを修正するにはどうすればよいですか?

MySQL の「不正な照合順序の組み合わせ」エラーを修正するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 02:08:02420ブラウズ

How Do I Fix the

MySQL の不正な照合順序エラー: 照合順序の混合を解決する

MySQL の「不正な照合順序の混合」エラーは、次の値と値を比較するときに発生します。異なる文字セットまたは照合順序。クエリのコンテキストでこの問題を分析してみましょう:

<code class="sql">SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount 
FROM ratings WHERE month='Aug' 
AND username IN (SELECT username FROM users WHERE gender =1)
GROUP BY username HAVING TheCount > 4
ORDER BY TheAverage DESC, TheCount DESC</code>

クエリに次の行を追加すると、

<code class="sql">AND username IN (SELECT username FROM users WHERE gender =1)</code>

「不正な照合順序の組み合わせ」エラーが発生しました。これは、評価テーブルのユーザー名列の照合順序が、ユーザー テーブルのユーザー名列と異なる場合があるためです。

間違った照合順序の特定:

どの照合順序であるかを判断するには列が照合順序の競合を引き起こしている場合は、次のクエリを使用します:

<code class="sql">SELECT table_schema, table_name, column_name, character_set_name, collation_name
FROM information_schema.columns
WHERE collation_name = 'latin1_general_ci'
ORDER BY table_schema, table_name, ordinal_position;</code>

このクエリでは、照合 latin1_general_ci を持つテーブルと列が表示されます。

問題の解決:

エラーを解決するには、不正な照合順序を持つテーブルを必要な照合順序 (通常は latin1_swedish_ci) に変換します。次のクエリを使用します:

<code class="sql">ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';</code>

ここで、tbl_name は照合順序が正しくないテーブルの名前です。

照合順序の競合を解決すると、変更されたクエリは正常に実行されます。

以上がMySQL の「不正な照合順序の組み合わせ」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。