【发布时间】:2011-03-04 07:01:09
【问题描述】:
我正在 Amazon 的 EC2 中迁移 MySQL 5.1 数据库,并且我遇到了我们用于图像存储的 longblob 数据类型的问题表。基本上迁移后longblob列的数据大小不一样了,因为字符编码好像不一样。
首先,这里是一个迁移前后的例子:
旧:
x??]]??}?_ѕ??d??i|w?%?????q$??+?
新:
x��]]����_ѕ��d��i|w�%�����q$��+�
我检查了两台机器上的字符集变量,它们是相同的。我还检查了“显示创建表”,它们也是相同的。客户端的连接方式相同(没有 SET NAMES,或指定字符集)。
这是我使用的 mysqldump 命令(我也尝试过不使用 --hex-blob):
mysqldump --hex-blob --default-character-set=utf8 --tab=. DB_NAME
这是我加载数据的方式:
mysql DB_NAME --default-character-set=utf8 -e "LOAD DATA INFILE 'EXAMPLE.txt' INTO TABLE EXAMPLE;"
这里是 MySQL 字符集变量(相同):
旧:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
新:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
我不确定还有什么方法可以运行 mysqldump 并使两台机器上的 blob 数据相同。任何提示将不胜感激。
【问题讨论】:
标签: mysql set blob character mysqldump