解决data too long for column 'name' at row 1

最先试一试最简单的测试方式就是先修改my.ini文件中的-default-character-set = gb2312或utf8,重启mysql再输入数据,如果不行,再考虑以下办法。

在程序中写了一段代码向数据库中插入数据,出现了data too long for column ‘name‘ at row 1的问题。在google搜了一下解决方法,真是五花八门,也逐一试了一遍,终于终于将问题解决了。

下面先贴一下网上的众多解决

1、修改my.ini文件:

将sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注释掉,ok!

2、修改数据库编码为utf8,jsp,servlet编码转换为utf8存入

3、只知道是中文处理的问题,但不知道如何改.最好的方法是把字段定得长一些

4、把mysql的字符集设为utf8(通过修改my.ini,把所有的latin1改为utf8)并且通过show variables like ‘%char%‘;   5、以前我也遇到过类似的情况,我的建议: 在装数据库的时候把你的字符集设置为gb2312,然后你建表的时候,汉字默认都是gb2312在连接数据库的时候不要写成characterEnconding=true&charset=gb2312,把这个去掉。然后在连接的时候写c最好用gbk,gb2312对某些不常见的字符会出现Data too long for column,比如“珺”字等,至于数据库,只有默认的字符集是gb2312或者gbk或者utf8都没什么问题

对于我这里的情况也简要描述下,我的mysql把server端,client端,connection的字符设置都为gbk,在控制太插入中文字没有问题,但是从程序里面插入中文字就存在问题了。

用第一种方法试了下,不行。

用将所有的编码格式改为utf8,以前数据库里面的中文字全变成了乱码,第二种方法也不行

第3种方法,我将数据库里面的name设为varchar(255)这是足够大的,可以存125个汉字了,还是不行,即使是存一个汉字也会报Data too long for column的错误,因此第3种方法显然是瞎掰。

用第四种方法试了下,也这是提供你信息,你的数据库各个端都采用什么编码方式,并不能解决问题

最后试了第五种方法,没有完全按照它所说的做,在插入数据库之前先执行stat.execute("set names gb2312");就能成功将中文字插入到数据库中。

这是为什么了?在采用第四种方式时,得到这样的信息 +--------------------------+---------------------------------------------------- -----+ | Variable_name            | Value     | +--------------------------+---------------------------------------------------- -----+ |

character_set_client     | gbk      | | character_set_connection | gbk      | | character_set_database   | gbk      | | character_set_results    | gbk      | | character_set_server     | gbk      | | character_set_system     | utf8      | | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars ets\ | +--------------------------+---------------------------------------------------- 说明我的系统编码方式与数据库的编码方式不符,用stat.execute("set names gb2312");将编码方式先改为gb2312方式,就可以解决这样的问题。

解决data too long for column 'name' at row 1

时间: 2024-10-05 02:05:45

解决data too long for column 'name' at row 1的相关文章

Data too long for column 'pay_channel' at row 1

报错日志: 08:42:12|Possible DeadLoop: 502|1.3438185|b7faf7a5-a229-4230-811d-017e4d3f13d3|b7faf7a5-a229-4230-811d-017e4d3f13d3 08:53:40|ReceiveData_WebProxy exp:MySql.Data.MySqlClient.MySqlException (0x80004005): Data too long for column 'pay_channel' at

Data truncation: Data too long for column 'id' at row 1

Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'titleimg' at row 1 at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1269) at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedSta

报错pymysql.err.DataError: (1406, "Data too long for column 'gender' at row 1")

在Django默认的admin后台创建超级用户时, 报错pymysql.err.DataError: (1406, "Data too long for column 'gender' at row 1")的解决方法. 创建过程为: 点击tool菜单的run manage.py task,输入createsuperuser,运行,按提示输入用户名,邮件,密码,以及密码确认. 解决方法为: 在pycharm中按快捷键ctr+h,查找到gender的相应字段,如图: 我们可以看到设置的ge

Data truncation: Data too long for column 'gender' at row 1 出现的原因

创建数据库的代码如下: create database day15 ; use day15 ; create table customer( id varchar(100) primary key, name varchar(100), gender varchar(4),# 1 male 0 female birthday date, cellphone varchar(20), email varchar(40), hobby varchar(100),#eat,sleep type var

[MySQL] Data too long for column 'title' at row 1

李刚轻量级JavaEE第六章的坑..艹李刚自己有没试过这些代码的啊,6.4这一份HqlQuery.java里需要的表,根本就跟他提供的sql脚本对不上啊..坑爹啊,而且字符编码集也有问题. 出现这个原因是编码不统一的问题. 首先字符编码集有GBK.GB2312.UTF8,区别详见 http://down.chinaz.com/server/201111/1423_1.htm 再看了手头上的一些源代码,结论是,感觉用utf8比较合适 那出现这个问题如何修复 1.查看一下MySQL的编码集,在MyS

Mysql text类型字段存储提示错误信息 String data,right truncated:1406 Data too long for column 'content' at row 1

String data,right truncated:1406 Data too long for column 'content' at row 1 当Mysql提示如下时: 1.首先查看存入的文本内容的大小,根据内容大小设置类型 如果超出,根据大小进行更换类型 2.如果还是超出那可能是Mysql根据配置文件限制Server接受数据包大小,有时候大的插入和更新会受max_allowed_packet参数限制,导致写入或者更新失败. 查看目前配置: 代码如下: 以上说明目前的配置是:60 M

解决Incorrect integer value: '' for column 'id' at row 1的方法

在使用Navicat for MySQL还原数据库备份时,出现Incorrect integer value: '' for column 'id' at row 1的错误; 网上查资料发现5以上的版本如果是空值应该要写NULL这种问题一般mysql 5.x上出现. 使用Select version();查看, 我用的是mysql5.0.37,而创建备份的MySQL数据库版本是5.6 官方解释说:得知新版本mysql对空值插入有"bug",要在安装mysql的时候去除默认勾选的enab

Data too long for column 'xxx' at row

Data too long for column 'xxx' at row 数据库的默认的utff-8,且连接的字符串也设置了utf-8,数据库字段用的text,但是还是报错,原因超出了长度,要最大的话可以设置为LONGTEXT mysql中text 最大长度为65,535(2的16次方–1)字符的TEXT列.如果你觉得text长度不够,可以选择 MEDIUMTEXT最大长度为16,777,215. LONGTEXT最大长度为4,294,967,295 详细用法可查看手册 http://dev.

插入中文错误ERROR 1406 (22001): Data too long for column 'name' at row 1

1.在导入数据前执行以下命令即可:set SESSION sql_mode=''; 通过设置sql_mode变量更改模式.linux下安装完mysql后,默认的sql-mode值是空,在这种情形下mysql执行的是一种不严格的检查,例如日期字段可以插入’0000-00-00 00:00:00’这样的值,还有如果要插入的字段长度超过列定义的长度,那么mysql不会终止操作,而是会自动截断后面的字符继续插入操作. 但是如果我们本意希望如果长度超过限制就报错,那么我们可以设置sql_mode为STRI