Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 导入数据库会导致字符集错误_Mysql_Sql_Import_Character Encoding_Mysqldump - Fatal编程技术网

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

Mysql 导入数据库会导致字符集错误,mysql,sql,import,character-encoding,mysqldump,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 所以,我想这意味着我试图导入的转储文件是用latin1解码的 然后,我打开SQL转储并查看它。我看到这句话: CREATE DATABASE IF NOT EXISTS

我有一个SQL转储,我想导入它。首先,我在终端中尝试了以下方法:

mysql -u root -ppass
create database db_name character set utf8 collate utf8_general_ci;
mysql -u root -ppass db_name < dump.sql
所以,我想这意味着我试图导入的转储文件是用
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'
我猜数据库转储文件已损坏。我想它的字符集或编码是不对的。也许我做错了什么


要导入此数据库,我必须做什么?多谢各位

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

  • 编辑此文件:

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

  • 添加以下字符设置:

    字符集服务器=utf8
    排序规则服务器=utf8\U unicode\U ci
    init connect='SET NAMES utf8'
    init\u connect='SET collation\u connection=utf8\u unicode\u ci'
    跳过字符集客户端握手

  • 最后,重新启动MySQL守护程序


如果我的命令正确,为什么会出现错误?我以前从未见过这样的错误。这是因为糟糕的数据库设计还是其他原因?@citizen_of_noobville正如我所说,命令是正确的,问题在于你的MySQL设置。你编辑了我给你看的那个文件吗?是的。我插入了这些,并使用
sudo服务mysql restart
重新启动了我的mysql守护程序。然而,它仍然不起作用。
ERROR 1253 (42000): COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'