mysql關(guān)于包含表情昵稱字段保存數(shù)據(jù)庫失敗問題處理
[導(dǎo)讀]原來數(shù)據(jù)庫結(jié)構(gòu)CREATE TABLE `user` (? `id` int(11) NOT NULL AUTO_INCREMENT,? `user_nickname` varchar(255) CH
原來數(shù)據(jù)庫結(jié)構(gòu)
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: 'xF0x9Fx92xA5' for column 'user_nickname' at row 1
org.hibernate.exception.GenericJDBCException: Incorrect string value: 'xF0x9Fx92xA5' 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: 'xF0x9Fx92xA5' for column 'user_nickname' at row 1
org.hibernate.exception.GenericJDBCException: Incorrect string value: 'xF0x9Fx92xA5' 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 '用戶昵稱';





