导入数据库导致字符集错误

时间:2014-10-23 09:42:52

标签: mysql sql import character-encoding mysqldump

我有一个SQL转储,我想导入它。首先,我在终端尝试了这个:

mysql -u root -ppass
create database db_name character set utf8 collate utf8_general_ci;
mysql -u root -ppass db_name < dump.sql

我收到了错误:

ERROR 1253 (42000) at line 23: COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'

所以,我想这意味着我尝试导入的转储在latin1中被解码。

然后,我打开了SQL转储并查看了它。我看到了这句话:

CREATE DATABASE IF NOT EXISTS `db_name` DEFAULT CHARACTER SET latin1 COLLATE utf8_unicode_ci;

所以,我这样做了:

mysql -u root -ppass
create database db_name character set latin1 collate utf8_unicode_ci;

我收到了这个错误:

ERROR 1253 (42000): COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'

我猜数据库转储文件已损坏。它的字符集或编码不正确我猜。或者也许我做错了什么。

我该怎么做才能导入这个数据库?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您的命令是正确的,但您必须更改MySQL设置以避免错误:

  • 编辑此文件:

    sudo nano -c /etc/mysql/my.cnf

  • 添加以下字符设置:

    character-set-server=utf8 collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' init_connect='SET collation_connection = utf8_unicode_ci' skip-character-set-client-handshake

  • 最后,重启MySQL守护进程。