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

推薦する

JSでよく使われるデータ処理方法

目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...

親要素に対する CSS 子要素の配置の実装

解決親要素に position:relative を追加します。子要素に position:abso...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

CentOS 7 パスワードを忘れた場合の解決プロセス図

必要Windows システムでも Linux システムでも、さまざまな理由でパスワードを忘れてしまう...

Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル

Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...

IE8 ベータ 1 には注意が必要な 2 つの領域があります

<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...

CSS3で実装されたサムネイルホバー効果

成果を達成する実装コードhtml <ヘッダー> <h1><em>...

CSSの絶対と相対について

冒頭にこう書かれています:アブソリュートは言った。「親戚よ、私はあなたを私の人生で見たくない!」なぜ...

スクロールラグの問題を解決するためのオーバーフロースクロールの詳細な説明

序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

モバイルデバイスでインラインスクロールを実装するための4つのソリューションの詳細な説明

ニーズの発見領域の一部のみスクロールでき、残りの部分は移動できない場合、どのような方法を使用しますか...

jsでユーザー登録機能を実装する

この記事の例では、ユーザー登録機能を実装するためのjsの具体的なコードを参考までに共有しています。具...

MySQL ルートパスワードを変更する複数の方法 (推奨)

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

overflow:hidden の役割の詳細な説明 (オーバーフローの非表示、フロートのクリア、マージンの崩壊の解決)

1. オーバーフロー:非表示 オーバーフロー非表示要素に overflow:hidden が設定さ...

MySQL 8.0.18 のインストールと設定方法のグラフィックチュートリアル (Windows 10 版)

この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...