Java Flyway迁移:使用德国Umlauts导入数据

Java Flyway迁移:使用德国Umlauts导入数据,java,encoding,utf-8,spring-boot,flyway,Java,Encoding,Utf 8,Spring Boot,Flyway,我将Flyway4.0与SpringBoot 1.3.0.RELEASE和MySQL 5.6.27社区服务器一起使用 当我使用MySQL Workbench检查模式时,它将“utf8\u general\u ci”作为默认排序规则,将“utf8”作为默认字符集(模式是使用“utf8-默认排序规则”创建的)。里面有一个表“Colors”,它的字符集也是utf8,就像一些varchar列一样 现在我有了一个初始的Flyway迁移脚本,它创建了具有完整结构的数据库。此外,它用一些项目填充颜色表 ...

我将Flyway4.0与SpringBoot 1.3.0.RELEASE和MySQL 5.6.27社区服务器一起使用

当我使用MySQL Workbench检查模式时,它将“utf8\u general\u ci”作为默认排序规则,将“utf8”作为默认字符集(模式是使用“utf8-默认排序规则”创建的)。里面有一个表“Colors”,它的字符集也是utf8,就像一些varchar列一样

现在我有了一个初始的Flyway迁移脚本,它创建了具有完整结构的数据库。此外,它用一些项目填充颜色表

...

DROP TABLE IF EXISTS `static_color`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `static_color` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  ...
  `color_group_name` varchar(15) DEFAULT NULL,
  ...
  ...
) ENGINE=InnoDB AUTO_INCREMENT=845 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

...

LOCK TABLES `static_color` WRITE;
/*!40000 ALTER TABLE `static_color` DISABLE KEYS */;
INSERT INTO `static_color` VALUES (7,'2C','Light Yellow Green','45-3',240,233,145,11,'Grün',119,'Light Yellowish Green',237,234,115,'','edea73');
/*!40000 ALTER TABLE `static_color` ENABLE KEYS */;
UNLOCK TABLES;

...
在一列中,我想保留一个颜色组名称(例如,Grün)。Flyway尝试导入数据,但收到如下警告

[localhost-startStop-1] DEBUG o.f.c.internal.dbsupport.SqlScript - Executing SQL: INSERT INTO `static_color` VALUES (7,'2C','Light Yellow Green','45-3',240,233,145,11,'Grün',119,'Light Yellowish Green',237,234,115,'','edea73')
[localhost-startStop-1] WARN  o.f.c.i.dbsupport.JdbcTemplate - DB: Invalid utf8 character string: 'FC6E' (SQL State: HY000 - Error Code: 1300)
[localhost-startStop-1] WARN  o.f.c.i.dbsupport.JdbcTemplate - DB: Incorrect string value: '\xFCn' for column 'color_group_name' at row 1 (SQL State: HY000 - Error Code: 1366)
结果是数据库中的条目只包含“Gr”而不是“color\u group\u name”列中的“Grün”。它用“Ä,Ü,Ü,ü,ß…”来切断每个条目


我不知道为什么会这样。当我在eclipse中查看迁移文件的属性时,它说它还具有UTF-8文本文件编码。甚至Flyway调试输出也有正确的编码。。。其他人有这个问题吗?

尝试将utf-8编码放入连接字符串中,如下所示:

jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8

尝试将utf-8编码放入连接字符串中,如下所示:

jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8

我不知道为什么,但在删除以下行后它会工作:

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
...
/*!40101 SET character_set_client = @saved_cs_client */;

我从MySQL Workbench export中获得了这些行,所以我只是使用了它们…

我不知道为什么,但在删除以下行后它会工作:

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
...
/*!40101 SET character_set_client = @saved_cs_client */;
我从MySQL工作台导出中得到了这些行,所以我只是使用它们