Ubuntu

mysql 轉儲的恢復在 ubuntu 20.04 上看起來不同

  • May 12, 2021

每天我在 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`;

他們應該是一樣的。

引用自:https://serverfault.com/questions/1063344