Data truncation: Data too long for column錯誤分析

有一次遇到mysql jdbc拋出異常

Data truncation: Data too long for column

經過思考,發現原因可能有兩種:

一、字段長度不夠。

可以考慮選擇更長的字段,例如:

VARCHAR->TEXT->MEDIUMTEXT->LONGTEXT->LONGBLOB

另外mysql貌似沒有nvarchar類型


二、數據源URL中的字符集選項跟數據庫表的實際字符集不統一

如果是統一的話,Java代碼的寫法應該是:

String driverName = "com.mysql.jdbc.Driver";

String dbURL = "jdbc:mysql://localhost:3306/cmsproj?useUnicode=true&characterEncoding=utf-8";


而數據表的創建方式是

CREATE TABLE xxx

( ...

) ENGINE=MyISAM DEFAULT CHARSET=utf8 


注意:

* 數據庫也可以指定字符集,但如果在create table中使用默認字符集,則create table更優先。

* Java代碼在編譯時使用utf8還是gbk不會有影響,只要傳入的參數不是亂碼就可以。


其實不統一字符集的話也是可以工作,只是有一定概率會拋出Data truncation異常,例如URL中指定了utf8字符集,而創建表不指明utf8字符集或者使用缺省latin字符集,則有可能拋出異常。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章