私のオペレーティングシステム情報:
uname -a
Linux debian 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64 GNU/Linux
地域設定:
locale
LANG=en_HK.UTF-8
LANGUAGE=en_HK:en
LC_CTYPE="en_HK.UTF-8"
LC_NUMERIC="en_HK.UTF-8"
LC_TIME="en_HK.UTF-8"
LC_COLLATE="en_HK.UTF-8"
LC_MONETARY="en_HK.UTF-8"
LC_MESSAGES="en_HK.UTF-8"
LC_PAPER="en_HK.UTF-8"
LC_NAME="en_HK.UTF-8"
LC_ADDRESS="en_HK.UTF-8"
LC_TELEPHONE="en_HK.UTF-8"
LC_MEASUREMENT="en_HK.UTF-8"
LC_IDENTIFICATION="en_HK.UTF-8"
LC_ALL=
Webページの特殊文字をクリップボードからコピーしてå
マウスパッドとシェルターミナルに貼り付けると、正常に表示されることがあります。
mysqlのバージョン情報:
mysql --version
mysql Ver 15.1 Distrib 10.5.11-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
MariaDBの文字と照合順序の設定:
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.001 sec)
show variables like 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.001 sec)
クリップボードからsqlite3シェルに貼り付け、sqlite3シェルに特殊文字を入力できます。
bashシェルでmsyql selectコマンドを実行し、特殊文字を表示できます。
debian@debian:~$ mysql -u root -D test -p -e 'select "å" ;'
+----+
| å |
+----+
| å |
+----+
Mariadb シェルは特殊文字を正しく表示します。
select * from `character`;
+---------+
| special |
+---------+
| å |
+---------+
1 row in set (0.000 sec)
MariaDBと入力すると、マウスカーソルがMariaDBシェルに入り、特殊文字をå
MariaDBシェルに貼り付けることができず、å
MariaDBシェルに特殊文字を入力することはできません。
Mariadb シェルに次の sql コマンドを入力できません。
select * from `character` where special="å";
MariaDBシェルがそれを入力として受け入れて正常に表示するにはどうすればよいですか?
私はMariaDBのデフォルト設定を使ってこの問題を解決しました。
sudo vim /etc/mysql/mariadb.cnf
# i delete all my customized setting.
[client]
[mysql]
[client-server]
socket = /run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
sudo systemctl restart mysqld
mysql -u root -p
MariaDB [(none)]> show variables like '%collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.001 sec)
MariaDB [(none)]> select "å" ;
+----+
| å |
+----+
| å |
+----+
1 row in set (0.000 sec)
MariaDB シェルに入力または貼り付けて特殊文字を表示できるようになりました。
デフォルト設定を使用するときにMariaDBシェルに特殊文字を入力して表示できる理由を説明してください。
@roaima、特殊文字の貼り付け、入力に失敗するのは、私のカスタム設定によるものです。
cat /etc/mysql/mariadb.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
init_connect = 'SET collation_connection = utf8mb4_unicode_ci'
以下は、特殊文字を正常に貼り付けて入力するためのデフォルト設定です。
cat /etc/mysql/mariadb.cnf
[client]
[mysql]
[client-server]
socket = /run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
ベストアンサー1
'mysql --version'の出力は、mysqlクライアントがreadlineではなくEditLineに接続されていることを示します。 readlineに関連付けられているmysqlクライアントを試してみてください(コミュニティパッケージまたは直接コンパイル)。これは、少なくともUbuntuの場合は既知のバグのようです。
https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1853818