数据库和文件中的UTF8MB4?

时间:2018-10-29 21:57:20

标签: mysql ansible utf8mb4

所以我正尝试使用Ansible将巨大的.sql文件导入数据库。我已将MySQL配置为在创建数据库之前运行set global default-character-set = utf8mb4。在将下面的数据导入到数据库字符集之前,我已经确认数据库字符集已设置为utf8mb4。

但是我仍然收到58229: Incorrect string value: '\\xBA' for column 'ISBN' at row 1\n"}

所讨论的行看起来像INSERT INTO BX-Book-Ratings VALUES (11676,'8475560806º',6);

º似乎是这里的问题。下面是我的tbl结构:

CREATE TABLE `BX-Book-Ratings` (
  `User-ID` int(11) NOT NULL default '0',
  `ISBN` varchar(13) NOT NULL default '',
  `Book-Rating` int(11) NOT NULL default '0'
) ENGINE=MyISAM;

任何提示将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

假设您期望使用º(MASCULINE ORDINAL INDICATOR),我建议...

十六进制BA,在latin1中是那个字符。对于utf8,它是十六进制C2BA

我假设您不想转换“巨大” .sql文件。另外,我假设没有混合的编码。这将是一场灾难。

您尚未显示用于执行“加载”的代码。如果它是LOAD DATA,则在语法上正确的位置添加以下子句:CHARACTER SET latin1

要进一步讨论,请提供以下内容:

SHOW VARIABLES LIKE 'char%';
SHOW CREATE TABLE `BX-Book-Ratings`;

我强烈建议您使用InnoDB,而不是MyISAM。