MySQL - Data too long for column 'uid' at row 1 Query:

时间:2022-03-27 07:48:17

错误:

java.lang.RuntimeException: java.sql.SQLException: Data truncation: Data too long for column 'uid' at row 1 Query: insert into t_user values(?,?,?,?,?,?) Parameters: [E6610CDA E9F3 460E 98A6 DD3176DA5225, xxx, 123, xxx126.com, false, A6B38790 C848 4410 920C 0CDB48EDF936F697C6D1 D23D 4BF4 8BE7 6C59A97B84CB]
 

现象:我们把数据库的字符集编码设置为utf-8,我们通过DOS界面向表的某一列插入汉字时会遇到类似

data too long for column 'name' at row 1的错误。

MySQL - Data too long for column 'uid' at row 1 Query:

 

1. 可能是因为数据库里的表设置的字符集不相同。

2. 也可能真是数据库字段里数据库确实过长(我是遇到的这种情况)。

例如:在同一个数据库中,存在utf8的表,也存在gbk_chinese_ci的表。

解决办法:

alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(单独修改指定表的字符集)

一般都是修改数据库Mysql的默认字符集和修改单个数据库的字符集

1. 在Mysql数据库目录下找到my.ini文件,然后Ctrl+F查找character-set,修改

[client]

port=3306

[mysql]

default-character-set=utf8

2. 修改单个数据库字符集,data目录下找到db.opt文件,然后修改

default-character-set=gbk
default-collation=gbk_chinese_ci

3. 用命令设置

mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;

4. 如果还嫌太麻烦了,就用一个蠢办法,如果整个数据库表不多且数据量不大的情况下,就将整个库导出,然后再去修改文件中字符集不一的表,最后再导入数据库。。。

解决的办法:

(1)set names gbk;(只对当前窗口有效)

(2)找到mysql的安装目录,把文件my.ini里的“default-character-set=utf8”修改为“default-character-set=gbk”,然后重启mysql服务

 

原文:http://www.cnblogs.com/xmaomao/archive/2013/04/15/3022571.html