Server version: 10.8.3-MariaDB
Server charset: UTF-8 Unicode (utf8mb4)
InnoDB
我得到一个错误试图导入到一个空白的数据库(db已经创建,只是试图导入现在):
ERROR 1366 (22007) at line 19669:列
glen_wazzup
的不正确字符串值:'x92t'。nuke_bbsearch_wordlist
。word_text
在第1行
SQL:
CREATE TABLE `nuke_bbsearch_wordlist` (
`word_text` varchar(50) binary NOT NULL default '',
`word_id` mediumint(8) unsigned NOT NULL auto_increment,
`word_common` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`word_text`),
KEY `word_id` (`word_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18719 ;
19669行(错误行):
INSERT INTO `nuke_bbsearch_wordlist` VALUES (0x6469646e9274, 6895, 0);
从我的阅读来看,它与字符编码有关,字符是一个撇号,并且电线在某处交叉。我读过你可以使用ALTER
语句,但这是一个原始的sql导入文件,还不能被导入,所以我不确定如何(或确切的"什么")改变文件,使它导入?
didn’t
——注意,撇号不是ascii字符,如果用latin1编码(和几个字符集),而是十六进制92,如果用utf8或utf8mb4编码,则是E28099。
另一方面,您声明了"服务器字符集:UTF-8 Unicode (utf8mb4)",但是x92在UTF-8
中无效您正在尝试导入?如何?从什么?从,mysqldump ?从CSV文件?你有一个INSERT
语句;那是从垃圾场来的吗?
在任何情况下,声明文件为"字符集latin1"可能是正确的。
排序不重要。
解决方案可能与将导入源文件从ISO-8859-1转换为UTF-8编码一样简单。
要在Linux上进行转换,您可以运行recode l1..u8 <filename >filename.out
(如果已安装)或iconv -f ISO-8859-1 -t UTF-8 -o filename.out filename
。然后将filename.out
导入MySQL。
然而,源编码可能不同于iso - 8859 - 1(例如,它可能是iso - 8859 - 2),所以你可能想尝试多个源编码,并检查输出文件是正确的(例如,通过观察非ascii字符filename.out
)。