MySQLコマンドが中国語で入力できない問題の解決方法

MySQLコマンドが中国語で入力できない問題の解決方法

問題を見つける

最近、MySQL コマンドを使用して MySQL サーバーに接続したときに、以下のように中国語の文字を入力できませんでした。

mysql> SELECT '中国語の文字 <> は削除されます';
+------------------------------------+
| 漢字 <> は削除されます |
+------------------------------------+
| 漢字 <> は削除されます |
+------------------------------------+
セット内の 1 行 (0.00 秒)

入力されたすべての中国語の文字は空白に置き換えられます。上記のテストは公式の mysql-5.7.32 バージョン用です。

公式の mysql changelog-5.7.34 を確認したところ、Oracle の公式 mysql-5.7.34 と mysql-8.0.24 でそれぞれ次のバグが修正されていることがわかりました。

libeditライブラリを使用してコンパイルされたビルドの場合、mysqlクライアントが呼び出された場合
--default-character-set=utf8オプションを使用すると、libeditは次の入力を拒否しました。
マルチバイト文字。(バグ #32329078、バグ #32583436、バグ #102806)

上記と同様の問題を示すバグ 102806 を参照してください。mysql コマンドラインの対話型モードでは、すべてのワイド文字の入力がサポートされていません。

中国語を入力できない場合はどうなりますか?

テストによると、このバグは、mysql コマンドを介して対話モードで MySQL サーバーに接続するセッション操作にのみ影響します。このバグを使用しているバージョンがオンラインになっている場合、テーブルを操作するときに中国語の文字が失われる問題が発生する可能性があります。

以下のメソッドは影響を受けません。

1. 各プログラムは関連するドライバーを介してデータベースに接続します。
2. mysql コマンドは、mysql -h ... -p.... < /tmp/t.sql のように非対話モードで実行されます。

どのバージョンが影響を受けますか?

このバグは 5.7.34 および 8.0.24 で修正されました。github-mysql-patch-117fb2 を参照してください。パッチによると、このバグは rpm、deb、または公式ビルド バージョンのいずれであっても、libedit のバージョンとは関係ありません。

私たちのテストによると、以下のバージョンが影響を受けます。

5.7.31 ~ 5.7.33
8.0.21 ~ 8.0.23

注意: 他のリリースはまだ明らかではないため、同じ問題が発生する可能性が高いです。ただし、リリースは通常、公式リリースより一歩遅れており、その下位バージョンでは問題が事前に修正されている可能性があります。

どう対処するか

オンライン バージョンの選択では、私がよく使用するバージョンなど、使用されているバージョンに重点を置くことができます。

- ペルコナ ブランチ ペルコナ-5.6.45
ペルコナ-5.7.28
ペルコナ-8.0.22

- 公式バージョン mysql-5.6.29
MySQL 5.7.28 より
MySQL 8.0.19 の場合

影響を受けるバージョンがすでにオンラインで使用されている場合は、次の方法で対処できます。

一時的な治療

アップグレードするのが面倒な場合は、まず 5.7.30 未満または 5.7.34 以上の mysql クライアント コマンドを使用できます。

マイナーバージョンアップグレード

マイナーバージョンをアップグレードすることが便利な場合は、次のバージョンにアップグレードすることをお勧めします。

5.7.35
8.0.26

要約する

これで、MySQL コマンドが中国語に入力できない問題についての記事は終わりです。MySQL コマンドが中国語に入力できないことに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL コマンドライン操作中のエンコードの問題の詳細な説明
  • MySQLソースコマンドの使い方の紹介
  • MySQLでよく使われるSQLとコマンドの入力からデータベースの削除、そして終了まで
  • 誤って削除されたデータを復元するための mysqlbinlog コマンドを使用した mysql の実装
  • MySQL ストアド プロシージャのクエリ コマンドの概要
  • MySQLデータベースでコマンドを自動補完する3つの方法
  • MySQL パスワードに特殊文字が含まれている場合とコマンドラインからログインする場合
  • MySQLデスクトップツールSQLyogのリソースとアクティベーション方法は、白黒のコマンドラインに別れを告げます
  • MySQL ログインおよび終了コマンドの形式
  • MySQLの認証コマンドgrantの使い方
  • MySQLの基本的な共通コマンドの概要

<<:  JavaScript でオブジェクトをエレガントに扱う 6 つの方法

>>:  Dockerの動作モードと原理の詳細な説明

推薦する

nginx が動的と静的の分離を実装する方法の例

目次server1にnginxをデプロイするサーバーにlnmpを展開するノード3にhttpdをデプロ...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...

Centos7.5でのIPアドレス設定の実装

1. IPアドレスを設定する前に、まずifconfigを使用してネットワークカード情報を表示し、ネッ...

Vueはキー表示のショートカットキー効果を取得する入力コンポーネントを実装します

ページ上でショートカットキーをカスタマイズする要件に遭遇し、ショートカットキーを設定して表示する場所...

MySQL マスタースレーブレプリケーションの原理と実践の詳細な説明

目次導入効果原理形状練習するこの記事では、例を使用して、MySQL マスター/スレーブ レプリケーシ...

js は、州、市、地区の 3 段階の選択カスケードを実装します。

この記事では、省、市、地区の3段階選択を実現するためのjsの具体的なコードを紹介します。具体的な内容...

CentOS 7.2 に SuPHP をインストールするための詳細な手順

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...

DockerでRabbitMqの共通クラスタとミラークラスタを構築する詳細な操作

目次1. RabbitMqの動作環境を構築する1.検索を通じてrabbitmqイメージを照会する2....

CSS を使用して要素のスクロールバーを非表示にするサンプルコード

どの要素でもスクロールできるようにしながら、スクロールバーを非表示にするにはどうすればよいでしょうか...

IISとAPACHEはHTTPSへのHTTPリダイレクトを実装しています

7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...

Linux 環境に MySQL 8.0 をインストールするプロセスの紹介

目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...

MySQL 8.0.18 インストール構成の最適化チュートリアル

MySQLのインストール、設定、最適化は参考用です。具体的な内容は次のとおりです。 MySQL ダウ...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

Vue2とVue3のライフサイクルの比較の詳細な理解

目次サイクル比較使用法要約するサイクル比較ヴュー2ヴュー3作成前設定作成された設定マウント前マウント...