Spring boot 插入表情符号不适用于spring boot和MariaDB

Spring boot 插入表情符号不适用于spring boot和MariaDB,spring-boot,utf-8,mariadb,utf8mb4,Spring Boot,Utf 8,Mariadb,Utf8mb4,我想插入emoji like连接时,将字符集设置为utf8mb4。请提供连接详细信息 在表中的列上使用utf8mb4。请提供SHOW CREATE TABLE,以便我们可以验证列,而不仅仅是表的默认值是utf8mb4。好的, 我发现了问题 解决办法是增加 spring: datasource: connectionInitSql: "SET NAMES 'utf8mb4'" 在application.yml中 connectionInitSql由HikariCP在打开连接时使用

我想插入emoji like连接时,将字符集设置为utf8mb4。请提供连接详细信息

在表中的列上使用utf8mb4。请提供
SHOW CREATE TABLE
,以便我们可以验证列,而不仅仅是表的默认值是utf8mb4。

好的, 我发现了问题

解决办法是增加

spring:
  datasource:
     connectionInitSql: "SET NAMES 'utf8mb4'" 
在application.yml中


connectionInitSql
由HikariCP在打开连接时使用。

对于带tomcat嵌入式的Spring引导使用:


spring.datasource.tomcat.initSQL=设置名称“utf8mb4”
spring引导
2.0.0.RC2

mysql
5.7.14

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>


Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xAD' for column 'title' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
... 68 more
这样做是可行的

spring.datasource.hikari.connection-init-sql=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

ref

我添加了创建脚本。请注意,我可以添加带有sql查询的表情符号,如
updatecustomersetnotes='因此,是否应该删除“验证查询”?是的,可以删除它。我删除了它,它就工作了。谢谢你,瑞克。
spring.datasource.hikari.connection-init-sql=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;