最近,在用mysql做一個測試用例的時候,出現亂碼。
現象:無論是從MySQL Query Browser還是Java程序插入數據庫,只要插入中文字符, 就會報錯“Data too long for column 'XXXXX' ”。這裏,顯然不是字段長度設置太短的問題。
在網上查資料,大多介紹不外乎下面集中解決方法:
1.修改Server端編碼。修改character_set_xxx
2.在JDBC-URL連接後面加上&useUnicode=true&characterEncoding=UTF8
3.修改my.ini文件
去掉sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"中的STRICT_TRANS_TABLES
真是病急亂投醫,所以該試的方法都試了,問題依然無法解決。
被這個問題折磨的實在不行了,最後準備卸載重裝一次。再不行,就去別人的機器上試下。在備份表的SQL語句時,發現SQL如下:
DROP TABLE IF EXISTS `test`.`test1`;
CREATE TABLE `test`.`test1` (
column_name column_type [charset latin7]
) ENGINE=InnoDB DEFAULT CHARSET=latin7;
最後面,竟有這麼一句:
DEFAULT CHARSET=latin7。
直接暈倒,明明已經在MySQL Query Browser中將表的編碼設置成UTF8了,怎麼是latin7。改成UTF8,問題解決。
看來,有時候不能太相信可視化的編輯器,還是直接的SQL最直接。
還有,就是查看下錶的字段也有column charset選項,看是否設置正確了。
綜上所述,出現亂碼後,一定檢查數據庫服務器、庫、表、字段的編碼設置是否支持中文。
經過試驗,只要上述都設置爲UTF8,即使,URL後面不添加useUnicode=true&characterEncoding=UTF8就不會出現亂碼。
MySQL5中文亂碼和Data Too Long For 'XXX' 解決方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
如何釋放已刪除的InnoDB磁盤空間
lvrenX
2019-02-24 13:04:33
MySQL数据库集群-PXC方案
wy53780
2020-04-23 13:55:07
《從0到1學習Flink》—— Flink 讀取 Kafka 數據批量寫入到 MySQL
zhisheng
2019-02-24 21:04:11
SpringBoot 填坑 (一) | CentOS7.4 環境下,表時間字段默認值設置失效
一個優秀的廢人
2019-02-24 15:33:55
mysql-存儲過程
雙子城
2019-02-24 13:43:57
jmeter學習指南之操作 mysql 數據庫
小強測試
2019-02-24 13:34:06
20190222全天的實驗
清歡難尋
2019-02-24 13:17:21
數據庫監控:zabbix(fpmmm)
AMGYM
2019-02-24 13:05:14
數據庫監控:nagios(check_mysql_health)
AMGYM
2019-02-24 13:05:14
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06
Sql server中一些Select檢索高級用法
wbzjacky
2019-02-24 13:12:37
將frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22