在 ubuntu 20.04 上,mysql 转储的恢复看起来有所不同

在 ubuntu 20.04 上,mysql 转储的恢复看起来有所不同

我每天都会在 Linux 14.04 上的 mysql 5.5.62 上使用以下命令备份我的 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       |

那么,我在这里没有得到什么?

答案1

你在那里得到的是十六进制文字。您可以通过在前面添加字符集介绍者像这样:

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`;

它们应该是一样的。

相关内容