今天开发说在从oracle迁移数据到msyql的测试过程中出现字段长度不够的问题,第一反应是字段设置太短,但是看过字段后发现不是这么简单
错误代码:
java.sql.BatchUpdateException: Data truncation: Data too long for column 'conditions' at row 1
错误截图:
oracle 字段类型和长度:
varchar(4000)
mysql 字段类型和长度
text (uft8)
按道理插入不了这不因该
然后开始查找原因:
查看linux 系统变量 env 发现系统字符集为:
LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
再次查看mysql配置my.cnf 查看字符集设置
[client]
#default-character-set = utf8
[mysqld]
character-set-server=utf8
发现客户端的字符集配置被注释了
打开后重启数据库,发现问题解决。
方法2:
在数据库连接参数中指定客户端字符集为utf8或set names utf8 都是可以的
先简单写到这吧,突然心头涌起一股蛋蛋的忧伤。