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+EChartsは、中国の地図の描画と省の自動回転と強調表示を実現します。

目次成果を達成する完全なコード + 詳細なコメントまとめ成果を達成する完全なコード + 詳細なコメン...

CentOS7にMySQL 8.0.26をインストールする手順

1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...

HTML タグのセマンティクス化 (H5 を含む)

導入HTML は、Web ドキュメントのコンテンツのコンテキスト構造と意味を提供します。HTML 自...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

ホバー画像のポップアウトポップアップ効果を実現するための純粋な CSS のサンプルコード

実施原則メイングラフィックは、背景と前景の 2 つの要素で構成されています。次のサンプルコードでは、...

Linux 上で Docker コンテナを作成、一覧表示、削除する方法の概要

1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...

Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル

導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...

JSONオブジェクトのキーを置き換える最良の方法

JSON (JavaScript Object Notation、JS Object Notatio...

HTML を使用して IE8 および IE9 の互換表示モードを無効にするヒント

IE 8 以降では互換モードが追加され、これを有効にすると IE の下位バージョンでレンダリングされ...

MySQL の int(n) の後の n はどういう意味ですか?

int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...

CSS における位置指定の概要

CSS には 4 種類の配置方法があり、シナリオによって効果が異なります。ここでは、これら 4 種類...

XHTML と CSS によるオブジェクト指向プログラミング

<br />XHTML と CSS がオブジェクト指向だったらよかったのに。 。太陽は北...

ネイティブJavaScriptカルーセル実装方法

この記事では、JavaScriptカルーセルの実装方法を参考までに紹介します。具体的な内容は次のとお...

JavaScript CollectGarbage 関数の例

まず、メモリ解放の例を見てみましょう。 <スクリプト言語="JavaScript&q...