MySQL无法使用Jetty上的utf8mb4字符串更新记录

时间:2013-11-13 21:56:37

标签: mysql amazon-ec2 jetty gradle utf8mb4

我正在使用MySQL DB在EC2 linux实例上运行java over jetty。该列是VARCHAR,设置为接受utf8mb4编码。

在玩完东西之后,我发现当我通过gradle jettyRunWar运行此代码时,或者甚至在tomcat服务器上运行相同的代码时,它都能正常工作。

当我在$ JETTY_HOME / webapps / root.war中放置完全相同的战争时,它不起作用,然后用sudo service jetty start运行jetty。

显示的错误是 -

java.sql.BatchUpdateException: Incorrect string value: '\xF0\x9F\x99\x89' for column 'name' at row 1

当前列定义 -

`name` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL

通过preparedStatement.setString(...)在SQL中设置值,我确保mysql连接器JAR是相同的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

一旦我将所有character_set_... MySQL数据库变量设置为utf8mb4,问题就解决了。

这可能意味着较新版本的jetty(8+)处理JDBC连接不同于Tomcat或旧版本,因为确切的连接字符串,bean定义&在所有情况下都使用DB。

到目前为止,character_set_...参数被设置为utf8,其中特定列定义为utf8mb4,这已经足够了。

希望在我被困在其中的那一天拯救其他任何人。