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

推薦する

Typescriptの基本構文13個を共有する

目次1. Tsとは何か2. 基本的な文法1. プリミティブデータ型を宣言する2. オブジェクト型を宣...

WeChatアプレット開発の章:落とし穴の記録

最近、会社初のミニプログラムの開発に参加しました。開発経験は基本的にWebViewをベースとしたハイ...

クールな充電アニメーションを実現する純粋なCSS

CSS のみを使用してどのような充電アニメーション効果を作成できるかを見てみましょう。バッテリーを...

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...

MySQL 8.0.12 簡単インストールチュートリアル

この記事では、MySQL 8.0.12のインストールチュートリアルを参考までに紹介します。具体的な内...

webpack と rollup を使用してコンポーネント ライブラリをパッケージ化する方法

序文以前、ローディングスタイルのコンポーネントを作成しました。コードの再利用性を実現するために、この...

Linux での scp および sftp コマンドの詳細な説明

目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...

Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れていま...

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

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

ウェブデザインの経験とスキルの概要

■ ウェブサイトのテーマ計画 ウェブサイトのテーマが断片化しすぎないように注意してください。一般的に...

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

Windows Server 2016 に Docker をインストールするプロセスと発生した問題

前提条件Windows Server でコンテナーを実行するには、Windows Server (半...

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...

MySQL5.7.21 解凍版インストール詳細チュートリアル図

私は頻繁にシステムをインストールするので、インストールのたびにいくつかのソフトウェアを再インストール...

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...