MySQL の文字セットの不一致によって発生する異常な接続テーブルの解決方法

MySQL の文字セットの不一致によって発生する異常な接続テーブルの解決方法

次のように簡単なテーブルクエリを実行すると、エラーメッセージが直接表示されます。文字セットが一致していないことがわかります。この記事では、MySQLの文字セットの種類と次の問題の解決策を記録します。

tt から a.id、b.id を a として、t2 を b として選択します。ただし、a.xx = b.xx です。

-- 演算 '=' の照合順序 (utf8mb4_unicode_ci,IMPLICIT) と (utf8mb4_general_ci,IMPLICIT) の不正な組み合わせ

1. 解決策

まず、上記の問題の解決策を見てみましょう。最も簡単に考えられるのは、2 つのテーブルの文字セットを統一することです。つまり、両方とも utf8mb4_general_ci にするか、両方とも utf8mb4_unicode_ci にします。この問題は、統一することで自然に解決されます。テーブルの文字セットを変更したくない場合はどうすればよいでしょうか。結局のところ、実稼働環境では、このような操作を実行するのは依然としてリスクがあります。ここでは、それほどエレガントではない解決策を示します。

フィールドの後に文字セットを指定します (すべてを utf8mb4_general_ci として指定することも、すべてを utf8mb4_unicode_ci として指定することもできます。実際のニーズに応じて処理してください)

tt から a.id、b.id を a として選択し、t2 を b として選択します。ただし、a.xx = b.xx で、utf8mb4_general_ci を照合します。

2. MySQLの文字セット

文字セット

一般的に言えば、国内のパートナーの場合、共通のキャラクターセットは次の3つです。

  • gbk: 2バイト
  • utf8: 3バイト
  • utf8mb4: 4バイト

MySQL は実際にはさらに多くの文字セットをサポートしており、show charset を通じて照会できます。

検証ルール

実際のケースでは、次のようなケースがよく見られます。

  • utf8_bin
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci
  • ラテン1一般cs

もちろん、show collat​​ion を通じてサポートされている検証ルールを表示することもできます。

上記の文言にご注意ください

  • ci: 大文字と小文字を区別しない略語は大文字と小文字を区別しません
  • cs: 大文字と小文字を区別する
  • bin: バイナリ保存、大文字と小文字を区別

これで、MySQL の文字セットの不一致によって発生するテーブル接続の異常を解決する方法についての記事は終わりです。MySQL の文字セットの不一致によって発生するテーブル接続の異常に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySql テーブル、フィールド、ライブラリの文字セットを変更および表示する方法
  • MySQL の文字セットと照合ルール (MySQL 照合セット)
  • MySQL でデータベース エンコーディング (データベース文字セット) とテーブルの文字エンコーディングを変更する方法
  • Mysql の文字セット設定の詳細な分析
  • MySQLのデフォルト文字セットを変更する2つの方法の詳細な分析
  • Mysql5 の文字セットエンコーディング問題を解決する

<<:  impress.js プレゼンテーション層フレームワーク (デモツール) - 初めての体験

>>:  CSSの2つの特別な値は、カスケードの継承と初期メソッドを制御するために使用されます。

推薦する

MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析

前書き: MySQL でテーブルを設計する場合、MySQL では UUID や非連続かつ非繰り返しの...

MySQLカバーインデックスの使用例

カバーインデックスとは何ですか?クエリで使用されるすべてのフィールドを含むインデックスを作成すること...

DockerにTomcat8をインストールする方法

1. dockerでtomcat8をインストールする1. Docker HubでTomcatイメージ...

Apache Superset を使用して ClickHouse データを視覚化する 2 つの方法

Apache Superset は、データを表示および探索する方法を提供する強力な BI ツールで...

CSSでemを開く正しい方法の詳細な説明

「通常 1em=16px」と言うのはなぜですか?ユーザーのブラウザによってレンダリングされるデフォル...

MySQL 5.7 の一時テーブルスペースを使用して落とし穴を回避する方法

導入MySQL 5.7 は、SSL/TLS と全体的なセキュリティ開発におけるいくつかの重要な変更に...

JavaScript 組み込みオブジェクトの概要

目次1. 組み込みオブジェクト2. 数学オブジェクト1. Mathオブジェクトの使用2. 指定された...

ページの下部にHTMLフッターを配置する簡単な方法

要件:ページ コンテンツが短く、ブラウザーの高さをサポートできない場合でも、フッターをウィンドウの下...

Ubuntu 16.04 64 ビット版の VMware Tools のインストールと構成のグラフィック チュートリアル

この記事では、VMware Toolsのインストールと構成に関するグラフィックチュートリアルを参考と...

html-webpack-plugin の使用方法の詳細な説明

最近、React プロジェクトで初めてhtml-webapck-pluginプラグインを使用しました...

3つの簡単な調整でMySQLを最適化する

私は熟練した DBA になるつもりはありませんが、MySQL を最適化するときは、いくつかの構成を調...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

mysql での rpm インストールの詳細な説明

インストールとアンインストールの表示 # rpm -qa | grep mysql を表示 # アン...

トップ 10 Js 画像処理ライブラリ

目次導入1. 異食症2. レナ3. コンプレッサー4. ファブリック5. ぼかす6. 画像を結合する...

MySQL でスロークエリログを有効にする方法

1.1 はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメ...