我尝试将我的 AWS RDS 实例从 Aurora 迁移到 MySQL。我从 Aurora 创建了一个转储文件并将其导入 MySQL 实例。
两个实例具有相同的字符集。
mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.7.26.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
在原始数据库中,希伯来字母显示为黑色菱形(在应用程序端转换为希伯来语)。迁移到新的 MySQL 实例后,我看到的不是黑色菱形问号。
可能是什么问题?
我认为您的问题是您已经使用 ANSI 字符集导出了转储文件,以使用 UTF8 获取转储文件,发出
mysqldump
带有选项的命令--default-character-set=utf8
并检查结果。(AFAIK mysqldump 的相同选项也适用于 Aurora)PS:在您的评论之后,我又挖掘了一些问题。问题来自
character-set-system
(which isutf8
)、character_set_server
(which islatin1
) 和character-set-client
(which isutf8mb4
) 的不同配置。根据此文档链接,这种差异可能会导致数据输入出现问题,并可能导致输出格式错误。您可以通过更改不同组件的字符集来检查此根本原因的有效性。