我有两个字符集错误,它们阻止我使用旧数据库的内容来填充我的数据库。
<强>1。错误代码 1366:不正确的字符串值“\xDB”
我已尝试将 TABLE
的 CHARACTER SET
更改为 utf8mb4
。
我研究过\xDB 是什么字符类型,然后偶然发现了 this .这让我相信这是一种 Javascript 转义格式。但是,我似乎找不到支持此功能的 MySQL CHARACTER SET
。
即使我确实找到了支持 Javascript 转义格式的 CHARACTER SET
,最好将所有内容都转换为更标准且更全面的 utf8mb4
吗?这将如何完成?
<强>2。错误代码 1300:无效的 utf8mb4 字符串
这是违规字符:®
同样,我尝试了与上述类似的事情,但收效甚微。
编辑:
我在新数据库中设置CHARACTER SET
如下:
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 ;
编辑 2:
我不知道这有什么不同,但问题是在执行 LOAD DATA INFILE
时出现的,如下所示:
USE `inventory`;
LOAD DATA INFILE
'all_products.csv'
INTO TABLE `products`
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES
TERMINATED BY ',\r\n'
IGNORE 1 ROWS
(`product_line`,`product_num`,`description`);
最佳答案
不要盲目地做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了解可用的修复及其适用的情况。
关于mysql - 错误代码 : 1366 && 1300 - MySQL CHARACTER SET Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52122461/