在用mysql存儲微信用戶的昵稱時,報了如下錯誤:
java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x84' for column
經過網絡搜索,總結原因為 因為表情符在某些終端,比如ios5.0以上,是以四字節表示的,而傳統的utf8只能保存3字節,所以報錯了。
解決辦法:修改mysql字符集為utf8mb4 解決步驟: 第一步:修改數據庫字符集 第二步:升級最新數據庫驅動
alter database databasename CHARACTER SET utf8mb4;
alter tbale tablename CHARACTER SET utf8mb4;
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
然後,重啟mysql。
經過以上修改,使用以下語句:
SHOW VARIABLES WHERE Variable_name
LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
查看數據庫的字符集都為utf8mb4了。
- 2.在升級最新的mysql數據庫驅動(mysql-connector-java 6.0.3)後出現了新錯誤:
com.mysql.cj.core.exceptions.InvalidConnectionAttributeException:
The server time zone value '?й???????' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver
(via the serverTimezone configuration property)
to use a more specifc time zone value if you want to utilize time zone support.
原因有三個: - 2.1 新driverClassName的路徑改為com.mysql.cj.jdbc.Driver了 - 2.2 數據庫連接url上添加 serverTimezone=GMT - 2.3 數據庫連接url上添加 userSSL=false
至此,所有的問題全部解決。
參考:
http://blog.csdn.net/wwtang9527/article/details/40947469 http://blog.csdn.net/sinat_33201781/article/details/51830688