我正在使用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是相同的。
有什么想法吗?
答案 0 :(得分:0)
一旦我将所有character_set_...
MySQL数据库变量设置为utf8mb4,问题就解决了。
这可能意味着较新版本的jetty(8+)处理JDBC连接不同于Tomcat或旧版本,因为确切的连接字符串,bean定义&在所有情况下都使用DB。
到目前为止,character_set_...
参数被设置为utf8,其中特定列定义为utf8mb4,这已经足够了。
希望在我被困在其中的那一天拯救其他任何人。