我有两个字符集错误,这些错误使我无法使用旧数据库的内容为数据库播种。
1。错误代码1366:不正确的字符串值“ \ xDB”
我尝试将CHARACTER SET
的{{1}}更改为TABLE
。
我研究了\ xDB作为字符类型的含义,偶然发现了this。这使我相信这是Javascript转义格式。但是,我似乎找不到支持此功能的MySQL utf8mb4
。
即使我确实找到了支持Javascript转义格式的CHARACTER SET
,将所有内容都转换为更标准的且包含CHARACTER SET
的内容也不是最好的选择吗?怎么办?
2。错误代码1300:无效的utf8mb4字符串
这是令人反感的字符:®
同样,我尝试了如上所述的类似操作,但收效甚微。
编辑:
我将utf8mb4
设置为新数据库,如下所示:
CHARACTER SET
编辑2:
我不知道这有什么不同,但是在执行CREATE TABLE `products` (
`product_id` INT NOT NULL AUTO_INCREMENT UNIQUE,
`product_line` VARCHAR(255) NOT NULL,
`product_num` VARCHAR(255) NOT NULL,
`description` LONGTEXT NOT NULL,
PRIMARY KEY (`product_id`)
) CHARACTER SET utf8mb4 ;
时出现了问题,如下所示:
LOAD DATA INFILE
答案 0 :(得分:2)
不要盲目地做ALTER ... CONVERT TO ...
;可能会使情况变得更糟。如果您已经对已经不正确的情况进行了“纠正”,那么我在下面给出的任何建议都不可能消除您遇到的两个问题。
®
和DB
不能相互映射。
DB
,以各种字符集表示:
macce 2 1 'Ř'
cp1250, latin2 2 1 'Ű'
cp1257, latin7 2 1 'Ū'
dec8, latin1, latin5 2 1 'Û'
hp8 2 1 'Ü'
与此同时,AE
:
cp1250, cp1251, cp1256, cp1257, geostd8,
hebrew, latin1, latin5, latin7 2 1 '®'
macce 2 1 'ģ'
hp8 2 1 'Û'
latin2 2 1 'Ž'
cp850, cp852, keybcs2 2 1 '«'
通常的错误是在一个地方指定latin1
,而在另一个地方指定utf8
/ utf8mb4
。
(为了便于讨论,utf8和utf8mb4的行为相同。)
This讨论了典型的问题。我担心可能由于错误的更正而使情况更加混乱,或者单个字符不足以进行诊断。请参阅this了解可用的修复程序以及它们适用于哪些情况。
答案 1 :(得分:0)
您是否尝试过将排序规则更改为sed -z 's/line 2\nline 3\n//g;s/line 2\nline 3\n$//' infile
?另外,您的utf8_unicode_ci
文件中有两个重要设置。他们是:
my.cnf
此外,我完全同意@Rick,您应该避免使用collation-server
character-set-server
。尝试在插入之前执行:
ALTER ... CONVERT TO ...
有帮助吗?