错误代码:1366 && 1300 - MySQL 字符集问题



我有两个字符集错误,阻止我用旧数据库的内容为我的数据库播种。

1. 错误代码 1366:字符串值"\xDB"不正确

我尝试将TABLECHARACTER SET更改为utf8mb4

我已经研究了\xDB作为字符类型是什么,并偶然发现了这一点。这让我相信这是一种Javascript转义格式。但是,我似乎找不到支持此功能的MySQLCHARACTER 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 ',rn'
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 的行为相同。

本文讨论了典型问题。 我担心要么是错误的更正使情况变得混乱,要么是单个字符不足以进行诊断。 有关可用的修补程序及其适用的案例,请参阅此处

您是否尝试过将排序规则更改为utf8_unicode_ci?此外,my.cnf文件中有两个重要设置。它们是:

collation-server
character-set-server

另外,我完全同意您应该避免@RickALTER ... CONVERT TO ....尝试在插入之前执行:

SET NAMES utf8_unicode_ci

这有帮助吗?

最新更新