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

时间:2021-08-28 16:40:20
mysql能把英文字段插如数据库了 当我输入中文时他就出现字段Data truncation: Data too long for column 'name' at row 1 
  我使用朋友的这个方法:(1)修改 C:\Developer\MySQL5.0\my.ini(MySQL Server Instance Configuration 文件)
设置default-character-set=gbk(注意,有2处)
(2)修改data目录中相应数据库目录下的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
重起mysql,就ok了.
 但问题还是这样的!
朋友门还有其他办法吗?
 当然我的name varchar(40) 能查入20个汉字的 我只要查如2个字!

42 个解决方案

#1


顶起来!!

#2


up

#3


顶到解决止!

#4


前天也是遇到了这个问题,因为我的my.ini文件配置编码方式为:UTF8
按理来说插入韩文没有问题,但是也是提示Data truncation: Data too long for column 
最后我发现一个根本问题,就是建表的时候表的编码方式是gb2312,我估计你虽然设置了gbk
但是表的编码方式为latin,你再看看

#5


如果这样的话 难道就只有改变表的编码方式了? 要不重新键表!

#6


的确是你说的那样 我的表的编码方式还是latin1_swedish_ci 但不知道为什么改变不过来!能告诉我怎么改变吗?

#7


UP

#8


用前台工具SQLyog,比较直观

#9


我是用的哪个!

#10


这个问题还在  顶死!

#11


顶到 死!!!!!

#12


修改字段的长度就OK了吧

#13


不是字段长度的问题  !  应该是编码问题!

#14


是编码的问题,数据库,表和字段的编码和jsp的编码统一,就应该能解决了,比如都是utf-8

#15


例如将所有的编码都设置成utf8,jsp的contentType="text/html;charset=utf-8"
修改数据库默认编码ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 
修改表字段的编码ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

#16


UP

#17


这个问题差不多一个月没有解决 CSDN上很多朋友提供了N多办法!但是都因为要改这改那很麻烦。现在是晚上1:24 (07/5/25夜)问题解决总结如下:
-----------------------------------------------------------
  mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
  1:插如数据到mysql中:
     在页面上加入本页的编码方式 
    <%@ page contentType="text/html;charset=gb2312" %>
     把你要插入的中文文字由gb2312转变为iso-8859
    title = new String(title.getBytes("GB2312"), "ISO-8859-1");
    ***注意此页面千万别在数据库的URL后面加任何编码方式*****
    conn = java.sql.DriverManager.getConnection    ("jdbc:mysql://localhost/zqswork","root","root");
  
   2:从mysql中读出数据到页面:
     依然在页面上加如编码方式
  <%@ page contentType="text/html;charset=gb2312" %> 
     把你要读出的中文由iso-8859转变为gb2312
  <%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
   ****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
    conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root"); 



---------------------------------------------------------------ok 继续你的j2ee旅游吧!                                                                              byzqswork

#18


这个问题请注意3点:
1。创建数据库的时候:CREATE DATABASE `database`
                        CHARACTER SET 'utf8'
                         COLLATE 'utf8_general_ci';
2.建表的时候          CREATE TABLE `database_user` (
                        `ID` varchar(40) NOT NULL default '',
                        `UserID` varchar(40) NOT NULL default '',
                      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.设置URL的时候       jdbc:mysql://localhost:3306/database?seUnicode=true&characterEncoding=UTF-8

这3个设置好了,基本就不会出问题了

#19


我觉得文件的编码格式也学要考虑啊

#20


#21


我刚遇到同类问题
顶!

#22


是驱动的问题,换个最新,我也遇到了

#23


是字符集问题引起的,用show full fields from + 表名就可以看出你的列的编码格式
把它改成GBK或者GB2312、uTF-8。
如果还不行的话,把你表的编码格式也改成上面的编码格式,我是两个都改了
就OK了!

#24


把mysql的编码格式改为gbk,然后把原来的数据库和表都drop掉,重新建数据库和表就可以用了。

#25


要先用重启mysql
在命令提示符下用:
net stop mysql
net start mysql

#26


没错 是编码的问题 很诡异 我一张表两个字段类型一样的 一个OK一个却data too long,后来我导出了SQL,改了一下
-- ----------------------------
-- Table structure for cities
-- ----------------------------
CREATE TABLE `cities` (
。。。。。。
。。。。。
) ENGINE=InnoDB DEFAULT CHARSET= utf8;//这改成UTF8就行了

#27


在编码都没有问题的情况下,更新jdbc 驱动 5.0.8就可以解决 本人配置xwiki自定义数据库的时候用这种方式解决的

#28


本人也遇到这样的问题,花了好长时间解决的,总结了一下,希望对各位有用
mySql错误:Data truncation: Data too long for column :这个问题是字符集编码格式问题,修改mysql 安装文件下的my.ini  文件,[mysql] 下面default-character-set=UTF8 修改成utf-8或者gbk,此文件中还有一处要改的 # created and no character set is define 下面default-character-set=UTF8  然后在的data目录下找到相应数据库文件 找到db.opt 文件 default-character-set=UTF8   default-collation=UTF8_swedish_ci 这2行文字都要改,这些都改了要是还不行的话,再查看你表的编码和表中字段的编码格式:在表上点击右键——表讯息——DDL 可以看到表和字段的编码格式,要是跟你配置文件中的不一致的话修改就OK了,修改方法:在表上点击右键——设计表——选项——字符集 ,然后点击你表中的每个字符串字段,查看下面的字符集编码是否一致,所有工作都做了肯定就好了。 http://yixinshan.taobao.com

#29


引用 15 楼 lchh5 的回复:
例如将所有的编码都设置成utf8,jsp的contentType= "text/html;charset=utf-8 "
修改数据库默认编码ALTER   DATABASE   `test`   DEFAULT   CHARACTER   SET   utf8   COLLATE   utf8_bin
修改表的编码:ALTER   TABLE   `category`   DEFAULT   ……



用这个就可以了,我刚做过试验,按照这个来做就可以了

#30


汉字乱码问题:
(1)修改   my.ini 设置default-character-set=gbk(注意,有2处) 
(2)修改data目录中相应数据库目录下的db.opt配置文件 default-character-set=gbk default-collation=gbk_chinese_ci 
(3) 生成库、表、字段时,不要隐含为 latin.
     检查,如果是latin, 则要改为 gbk

这样在3个层次注意字符集的设置问题。应该没有问题了。

#31


先把表删了,把字段长度改的大写,重新运行就可以,我刚试了

#32


引用 10 楼 zqswork 的回复:
这个问题还在  顶死!


记得保存没?

#33


上次解决了 那个问题 但是今天又遇到啦 换了一个系统按照原来的办法 就又不行啦

#34


很棘手的问题,我也遇到了!
我遇到的问题是在程序中插入中文字符可以,但是在数据库中查看时,会不正常显示!
但是在mysql doc中使用sql插入中文就会报data too long的错误提示,我使用的是utf8编码!
在插入数据之前我把编码都统一了,都是utf8。
1.连接数据的url为
jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8
2.安装mysql5.0时使用的是utf8编码格式
3.更改数据库中相应属性编码为utf8
先查看一下各个变量的编码:show variables like 'character_set_%';
通过该语句设置编码set names utf8;//这个基本会更改大部分,可能会剩下一个,那个无所谓!
但是,此时,如果在mysql doc中使用sql语句插入中文的话,还是会报data too long的错误,
这是因为在mysql的控制台属性中,默认代码页那项中有两种编码,一种是简体中文GBK,一种是
OEM美国,我们一般默认是GBk,所以这就造成了在doc下插入会报错!
我只能试着用程序插入数据了,不过我看你使用的是GBK,所以应该可以,你只需要把编码都统一一下,
除了上面的使用GBK外,在创建数据库,创建表的时候都加上编码,这样应该可以。
4.create database dbname default character set utf8;
5.create table tabname(.....) ENGINE=InnoDB default charset=utf8;
试一下吧,希望对你有用,我再看看,还有没有其他的办法!

#35


还是没解决  希望高手再现给解决一下啊

#36


我这边也出现了这样的问题,字符编码都是utf-8 ,最后发现数据库的字段为blob 类型,只能存储65k大小的内容,将字段类型设为longblob  就ok了。

#37


我是windows系统  mysql的指令窗口默认是gbk的  而且显示编码方式貌似改不了(我不会。)  应该是这个问题

这样在mysql指令窗口中向utf8的表中插中文就会有data too long 提示了,而且貌似插不进去。

然后我用myeclipse 去插数据,再在指令窗口查看 显示的是乱码,但实际上数据的确是按utf8添加进数据库的。

实际项目运行可以正常显示中文,只要你用来显示的编码方式正确。


主要问题应该是windows下mysql指令窗口的显示编码问题。

#38


顶~!

#39


:(1)修改   C:\Developer\MySQL5.0\my.ini(MySQL   Server   Instance   Configuration   文件) 
设置default-character-set=gbk(注意,有2处) 
(2)修改data目录中相应数据库目录下的db.opt配置文件 
default-character-set=gbk 
default-collation=gbk_chinese_ci 
重起mysql,就ok了. 

#40


我也遇到了类似的问题,页面和数据库都UTF8格式,但是还是偈尔会出Data too long的错误。
不知怎么回事。

#41


其实最终还都是编码的问题,主要的问题出在以下几点:
1.数据库的编码格式
2.所用语言的编码格式
3.如果是网页提交或接收的编码格式
以上3点的编码格式都一致的情况下,就不会出现乱码了。

#42


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

#1


顶起来!!

#2


up

#3


顶到解决止!

#4


前天也是遇到了这个问题,因为我的my.ini文件配置编码方式为:UTF8
按理来说插入韩文没有问题,但是也是提示Data truncation: Data too long for column 
最后我发现一个根本问题,就是建表的时候表的编码方式是gb2312,我估计你虽然设置了gbk
但是表的编码方式为latin,你再看看

#5


如果这样的话 难道就只有改变表的编码方式了? 要不重新键表!

#6


的确是你说的那样 我的表的编码方式还是latin1_swedish_ci 但不知道为什么改变不过来!能告诉我怎么改变吗?

#7


UP

#8


用前台工具SQLyog,比较直观

#9


我是用的哪个!

#10


这个问题还在  顶死!

#11


顶到 死!!!!!

#12


修改字段的长度就OK了吧

#13


不是字段长度的问题  !  应该是编码问题!

#14


是编码的问题,数据库,表和字段的编码和jsp的编码统一,就应该能解决了,比如都是utf-8

#15


例如将所有的编码都设置成utf8,jsp的contentType="text/html;charset=utf-8"
修改数据库默认编码ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 
修改表字段的编码ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

#16


UP

#17


这个问题差不多一个月没有解决 CSDN上很多朋友提供了N多办法!但是都因为要改这改那很麻烦。现在是晚上1:24 (07/5/25夜)问题解决总结如下:
-----------------------------------------------------------
  mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
  1:插如数据到mysql中:
     在页面上加入本页的编码方式 
    <%@ page contentType="text/html;charset=gb2312" %>
     把你要插入的中文文字由gb2312转变为iso-8859
    title = new String(title.getBytes("GB2312"), "ISO-8859-1");
    ***注意此页面千万别在数据库的URL后面加任何编码方式*****
    conn = java.sql.DriverManager.getConnection    ("jdbc:mysql://localhost/zqswork","root","root");
  
   2:从mysql中读出数据到页面:
     依然在页面上加如编码方式
  <%@ page contentType="text/html;charset=gb2312" %> 
     把你要读出的中文由iso-8859转变为gb2312
  <%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
   ****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
    conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root"); 



---------------------------------------------------------------ok 继续你的j2ee旅游吧!                                                                              byzqswork

#18


这个问题请注意3点:
1。创建数据库的时候:CREATE DATABASE `database`
                        CHARACTER SET 'utf8'
                         COLLATE 'utf8_general_ci';
2.建表的时候          CREATE TABLE `database_user` (
                        `ID` varchar(40) NOT NULL default '',
                        `UserID` varchar(40) NOT NULL default '',
                      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.设置URL的时候       jdbc:mysql://localhost:3306/database?seUnicode=true&characterEncoding=UTF-8

这3个设置好了,基本就不会出问题了

#19


我觉得文件的编码格式也学要考虑啊

#20


#21


我刚遇到同类问题
顶!

#22


是驱动的问题,换个最新,我也遇到了

#23


是字符集问题引起的,用show full fields from + 表名就可以看出你的列的编码格式
把它改成GBK或者GB2312、uTF-8。
如果还不行的话,把你表的编码格式也改成上面的编码格式,我是两个都改了
就OK了!

#24


把mysql的编码格式改为gbk,然后把原来的数据库和表都drop掉,重新建数据库和表就可以用了。

#25


要先用重启mysql
在命令提示符下用:
net stop mysql
net start mysql

#26


没错 是编码的问题 很诡异 我一张表两个字段类型一样的 一个OK一个却data too long,后来我导出了SQL,改了一下
-- ----------------------------
-- Table structure for cities
-- ----------------------------
CREATE TABLE `cities` (
。。。。。。
。。。。。
) ENGINE=InnoDB DEFAULT CHARSET= utf8;//这改成UTF8就行了

#27


在编码都没有问题的情况下,更新jdbc 驱动 5.0.8就可以解决 本人配置xwiki自定义数据库的时候用这种方式解决的

#28


本人也遇到这样的问题,花了好长时间解决的,总结了一下,希望对各位有用
mySql错误:Data truncation: Data too long for column :这个问题是字符集编码格式问题,修改mysql 安装文件下的my.ini  文件,[mysql] 下面default-character-set=UTF8 修改成utf-8或者gbk,此文件中还有一处要改的 # created and no character set is define 下面default-character-set=UTF8  然后在的data目录下找到相应数据库文件 找到db.opt 文件 default-character-set=UTF8   default-collation=UTF8_swedish_ci 这2行文字都要改,这些都改了要是还不行的话,再查看你表的编码和表中字段的编码格式:在表上点击右键——表讯息——DDL 可以看到表和字段的编码格式,要是跟你配置文件中的不一致的话修改就OK了,修改方法:在表上点击右键——设计表——选项——字符集 ,然后点击你表中的每个字符串字段,查看下面的字符集编码是否一致,所有工作都做了肯定就好了。 http://yixinshan.taobao.com

#29


引用 15 楼 lchh5 的回复:
例如将所有的编码都设置成utf8,jsp的contentType= "text/html;charset=utf-8 "
修改数据库默认编码ALTER   DATABASE   `test`   DEFAULT   CHARACTER   SET   utf8   COLLATE   utf8_bin
修改表的编码:ALTER   TABLE   `category`   DEFAULT   ……



用这个就可以了,我刚做过试验,按照这个来做就可以了

#30


汉字乱码问题:
(1)修改   my.ini 设置default-character-set=gbk(注意,有2处) 
(2)修改data目录中相应数据库目录下的db.opt配置文件 default-character-set=gbk default-collation=gbk_chinese_ci 
(3) 生成库、表、字段时,不要隐含为 latin.
     检查,如果是latin, 则要改为 gbk

这样在3个层次注意字符集的设置问题。应该没有问题了。

#31


先把表删了,把字段长度改的大写,重新运行就可以,我刚试了

#32


引用 10 楼 zqswork 的回复:
这个问题还在  顶死!


记得保存没?

#33


上次解决了 那个问题 但是今天又遇到啦 换了一个系统按照原来的办法 就又不行啦

#34


很棘手的问题,我也遇到了!
我遇到的问题是在程序中插入中文字符可以,但是在数据库中查看时,会不正常显示!
但是在mysql doc中使用sql插入中文就会报data too long的错误提示,我使用的是utf8编码!
在插入数据之前我把编码都统一了,都是utf8。
1.连接数据的url为
jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8
2.安装mysql5.0时使用的是utf8编码格式
3.更改数据库中相应属性编码为utf8
先查看一下各个变量的编码:show variables like 'character_set_%';
通过该语句设置编码set names utf8;//这个基本会更改大部分,可能会剩下一个,那个无所谓!
但是,此时,如果在mysql doc中使用sql语句插入中文的话,还是会报data too long的错误,
这是因为在mysql的控制台属性中,默认代码页那项中有两种编码,一种是简体中文GBK,一种是
OEM美国,我们一般默认是GBk,所以这就造成了在doc下插入会报错!
我只能试着用程序插入数据了,不过我看你使用的是GBK,所以应该可以,你只需要把编码都统一一下,
除了上面的使用GBK外,在创建数据库,创建表的时候都加上编码,这样应该可以。
4.create database dbname default character set utf8;
5.create table tabname(.....) ENGINE=InnoDB default charset=utf8;
试一下吧,希望对你有用,我再看看,还有没有其他的办法!

#35


还是没解决  希望高手再现给解决一下啊

#36


我这边也出现了这样的问题,字符编码都是utf-8 ,最后发现数据库的字段为blob 类型,只能存储65k大小的内容,将字段类型设为longblob  就ok了。

#37


我是windows系统  mysql的指令窗口默认是gbk的  而且显示编码方式貌似改不了(我不会。)  应该是这个问题

这样在mysql指令窗口中向utf8的表中插中文就会有data too long 提示了,而且貌似插不进去。

然后我用myeclipse 去插数据,再在指令窗口查看 显示的是乱码,但实际上数据的确是按utf8添加进数据库的。

实际项目运行可以正常显示中文,只要你用来显示的编码方式正确。


主要问题应该是windows下mysql指令窗口的显示编码问题。

#38


顶~!

#39


:(1)修改   C:\Developer\MySQL5.0\my.ini(MySQL   Server   Instance   Configuration   文件) 
设置default-character-set=gbk(注意,有2处) 
(2)修改data目录中相应数据库目录下的db.opt配置文件 
default-character-set=gbk 
default-collation=gbk_chinese_ci 
重起mysql,就ok了. 

#40


我也遇到了类似的问题,页面和数据库都UTF8格式,但是还是偈尔会出Data too long的错误。
不知怎么回事。

#41


其实最终还都是编码的问题,主要的问题出在以下几点:
1.数据库的编码格式
2.所用语言的编码格式
3.如果是网页提交或接收的编码格式
以上3点的编码格式都一致的情况下,就不会出现乱码了。

#42


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