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の動作モードと原理の詳細な説明

推薦する

Vueはファイルのアップロードとダウンロードを実装します

この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...

MySQL 8.0 WITH クエリの詳細

目次MySQL 8 の WITH クエリについて学ぶ1. 例3. 練習するMySQL 8 の WIT...

フロントエンドが習得すべき、複数列の等高レイアウトを実現するための CSS テクニック

1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

いくつかの CSS3 タグの短縮形 (推奨)

border-radius: CSS3 丸い角構文: border-radius: 25px;楕円...

Docker の Windows ストレージ パス設定操作

Windows 10 に Docker をインストールする場合、コンテナタイプを Linux コンテ...

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

vue3 を使用したジグソーパズルゲームのリファクタリングの例

序文プロジェクト内のパズルゲーム(デジタル華容路とも呼ばれる)を再構築するのに 2 日かかりました。...

カルーセル効果を作成するためのjs

カルーセルはフロントエンド開発において比較的重要なポイントだと思います。ネイティブjsの知識ポイント...

Vue でデータコレクターを設計する

目次シナリオ中核問題ステータス監視状態監視の利点国家監視の欠点復興実行のアイデア依存関係の収集要約す...

JavaScript ベースで年・月・日の 3 階層連携を実現

この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...

MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

序文:最も一般的に使用される MySQL 論理バックアップ ツールは mysqldump です。通常...

DockerにRabbitMQをインストールする詳細な手順

目次1. 鏡を見つける2. RabbitMQイメージをダウンロードする3. RabbitMQコンテナ...

Windows で mysql 8.0.12 をインストールするための詳細なチュートリアル

この記事では、MySQL 8.0.12のインストール方法に関する詳細なチュートリアルを参考までに紹介...

Firefox の CSS を使用してデータを盗む

0x00 はじめに数か月前、Firefox に脆弱性 (CVE-2019-17016) があること...