Ubuntu
mysql 轉儲的恢復在 ubuntu 20.04 上看起來不同
每天我在 mysql 5.5.62 上的 Linux 14.04 上使用以下命令備份我的 wiki 數據庫
/usr/bin/mysqldump -u root my_wiki > wiki.`date +"%m-%d-%Y_%T"`.sql
當我將轉儲還原到同一台機器時,還原成功。但是,當我將轉儲恢復到新的 ubuntu 20.04 機器時,我會在此表中看到以下內容。
mysql> select user_name from user; +------------------------------------------+ | user_name | +------------------------------------------+ | 0x412E706172646F | | 0x4162656C2E6564756172646F | | 0x4164616D2E676F746368 | | 0x416C6578616E6465722E6275646E6576696368 |
它應該看起來像的地方
mysql> select user_name from user; -------------- select user_name from user -------------- +---------------------+ | user_name | +---------------------+ | A.bardo | | Abel.smith | | Adam.Mo | | Alexander.bud |
那麼,我沒有得到什麼?
你得到的是Hexadecimal Literals。您可以通過像這樣添加字元集介紹器來選擇儲存值的人類可讀表示:
SELECT _utf8 0x412E706172646F;
這將產生
+------------------------+ | _utf8 0x412E706172646F | +------------------------+ | A.pardo | +------------------------+
對於您上面的查詢,您可以分別使用
SELECT _utf8 user_name from user;
至於你的問題。;-)
為了進一步檢查這種行為,我建議檢查您與數據庫的連接的字元集
SHOW VARIABLES LIKE '%character_set%'; +--------------------------+----------------------------+ | 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 | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
然後檢查兩個系統上數據庫的字元集
SHOW CREATE DATABASE `your_db_name`;
他們應該是一樣的。