ホームページ > データベース > mysql チュートリアル > MySQL の「不正な照合順序の組み合わせ」エラーを修正する方法?

MySQL の「不正な照合順序の組み合わせ」エラーを修正する方法?

DDD
リリース: 2025-01-10 19:41:47
オリジナル
333 人が閲覧しました

How to Fix MySQL's

MySQL の「不正な照合順序の組み合わせ」エラーのトラブルシューティング

大規模なデータセットは、MySQL のイライラする「照合順序の不正な組み合わせ」エラーを引き起こすことがあります。これは、一貫性のない文字セットと照合順序を持つデータを比較するときに発生します。

問題

次のクエリについて考えてみましょう:

<code class="language-sql">SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€'</code>
ログイン後にコピー

これを実行すると、以下が生成される可能性があります:

<code>Error Number: 1267
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='</code>
ログイン後にコピー

解決策: 文字列のエスケープとエンコーディングの変更

これを修正するには、主に 2 つのアプローチがあります。問題のある文字列をエスケープするか、データベースとテーブルのエンコーディングを変更するです。

方法 1: 文字列のエスケープ (一時的な修正)

文字列をエスケープすると、一時的にエラーを回避できます:

<code class="language-sql">SET collation_connection = 'utf8_general_ci';

SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again \"昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€\"'</code>
ログイン後にコピー

ただし、これは応急処置的な解決策であり、将来的に問題が発生する可能性があります。

方法 2: データベースとテーブルのエンコーディングを変更する (永続的な解決策)

永続的な修正を行うには、utf8_general_ci:

を使用するようにデータベースとテーブルを標準化します。
<code class="language-sql">ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;</code>
ログイン後にコピー

接続の照合順序とデータベース/テーブルのエンコーディングを utf8_general_ci に統合することで、一貫したデータ処理が保証され、照合順序の不一致が排除されます。 これは推奨されるアプローチです。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート