Server version: 10.8.3-MariaDB
Server charset: UTF-8 Unicode (utf8mb4)
InnoDB
我在尝试导入到空白数据库时遇到错误(数据库已创建,现在尝试导入):
第19669行出现错误1366(22007):不正确的字符串值:'\x92t',用于第1行中glen_wazzup
. nuke_bbsearch_wordlist
. word_text
列
“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导入文件,还不能导入,所以我不知道如何(或确切地“什么”)改变文件,使其导入?
2条答案
按热度按时间41ik7eoe1#
didn’t
--请注意,撇号不是ascii字符,如果以latin 1(和几个字符集)编码,则为十六进制92;如果以utf8或utf8 mb 4编码,则为E28099。另一方面,您已声明“服务器字符集:UTF-8 Unicode(utf8 mb 4)",但x92在UTF-8中无效
您正在尝试导入?如何导入?从什么导入?从mysqldump导入?从CSV文件导入?您有一个
INSERT
语句;这是从垃圾堆里来的吗在任何情况下,声明文件是“字符集latin 1”可能都是正确的。
排序规则并不重要。
eoxn13cs2#
解决方案可能很简单,只需将导入源文件从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),因此您可能需要尝试多种源编码,并检查哪个输出文件看起来正确(例如,通过查看
filename.out
中的非ASCII字符)。