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つの特別な値は、カスケードの継承と初期メソッドを制御するために使用されます。

推薦する

element.style インライン スタイルを変更する方法のチュートリアル

序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...

Centos8 で yum を使用して rabbitmq をインストールするチュートリアル

/etc/yum.repos.d/フォルダに入るrabbitmq-erlang.repo ファイルを...

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラ...

JavaScript 遅延読み込みの詳細な説明

目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...

JSはアニメーションのレイアウト変換を実装します

JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...

MySQL の null (IFNULL、COALESCE、NULLIF) に関する知識ポイントのまとめ

この記事では、MySQL の null (IFNULL、COALESCE、NULLIF) に関連する...

MYSQLでリモートアクセス権限を有効にする方法

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

HTMLを教える記事

アーティストになるつもりがない場合は、開発者として HTML を読んで、必要に応じて簡単な変更を加え...

MySQL における制限関数と合計関数の混在使用の問題の詳細な説明

序文今日、注文データを同期した後、同僚は、合計注文金額とデータソースの合計金額に差があったため、LI...

コンテンツウェブページの画像プレビューのデザイン

<br />以前、「コンテンツページ番号のプレビューナビゲーション」と「写真プレビューナ...

Linux仮想メモリについての簡単な説明

目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...

MySQL に接続する際に Navicat for MySQL が 2005 エラーを報告する問題を解決する

前回の記事では、Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決...

ソケット '/tmp/mysql.sock' 経由でローカル MySQL に接続できない解決策

エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...

Docker は MySQL をインストールし、中国語の文字化けの問題を解決します

目次1. MySQLイメージを取得する2. ダウンロードが完了したか確認する3. MySQLはローカ...