原来数据库结构
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_nickname` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '抽奖用户昵称'
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
user_nickname 字段非 utf8mb4 保存表情符号报错。
insert into user (user_nickname) values (?)
java.lang.RuntimeException: org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xF0\x9F\x92\xA5' for column 'user_nickname' at row 1
org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xF0\x9F\x92\xA5' for column 'user_nickname' at row 1
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
解决办法:
修改字段编码类型为 utf8mb4
sql 语句: ALTER TABLE user MODIFY COLUMN user_nickname varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户昵称';
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_nickname` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '抽奖用户昵称'
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
user_nickname 字段非 utf8mb4 保存表情符号报错。
insert into user (user_nickname) values (?)
java.lang.RuntimeException: org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xF0\x9F\x92\xA5' for column 'user_nickname' at row 1
org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xF0\x9F\x92\xA5' for column 'user_nickname' at row 1
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
解决办法:
修改字段编码类型为 utf8mb4
sql 语句: ALTER TABLE user MODIFY COLUMN user_nickname varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户昵称';