从mysqldump导入时,POINT字段上的“无效的utf8mb4字符串”警告

时间:2017-02-06 20:00:25

标签: mysql utf8mb4

我最近转储了一个数据库,作为将其从旧服务器迁移到新服务器的一部分。某些表将utf8mb4字符集设置为默认排序规则,并将某些字段设置为字符集。

其中一个表还有一个POINT类型的字段。当我运行mysqldump --default-character-set=utf8mb4 ... > dump.sql然后尝试导入dump.sql时,对于在POINT字段中设置了位置的任何行,我都会收到“无效的utf8mb4字符串”警告。

我需要担心吗?在我看来数据是否正确迁移,但我不喜欢看到警告!

编辑:示例代码以及如何重现。以下是mysqldump的输出,没有特殊选项(添加默认的utfmb4 charset选项没有帮助),在示例数据库的示例表上。该表有一行:

/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET TIME_ZONE='+00:00' */;       
/*!40101 SET character_set_client = utf8mb4 */;

CREATE TABLE `Items` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Title` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
  `LatLong` point NOT NULL,      
  PRIMARY KEY (`ID`),     
  SPATIAL KEY `LatLong` (`LatLong`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

INSERT INTO `Items` VALUES (1,'item1','\0\0\0\0\0\0\0?4??=@\??O@?V?');

如果您在包含此SQL的文件上使用mysql source file.sql,则会在插入内容中收到以下警告:

Query OK, 1 row affected, 1 warning (0.00 sec)
Warning (Code 1300): Invalid utf8mb4 character string: 'BE141E'

更多信息:

> file -i file.sql
file.sql: application/octet-stream; charset=binary

> mysql --version
mysql  Ver 14.14 Distrib 5.7.17, for Linux (i686) using  EditLine wrapper

运行Ubuntu 16.04 LTS

1 个答案:

答案 0 :(得分:0)

我认为这是https://bugs.mysql.com/bug.php?id=80150的另一个症状。 - Guilhem(甲骨文的MySQL开发)