一个表的一个字段url(text)的数据太长导致update这个字段发生错误如下SQL Exception: Data truncation: Data too long for column 'url' at row 1
java.sql.BatchUpdateException: Data truncation: Data too long for column 'url' at row 1翻看mysql官方文档,他定义的长度为65536.
 
现在急切要解决这个问题?(如何能增加text的长度??) 

解决方案 »

  1.   

    MEDIUMTEXT  16777216
    LONGTEXT 4294967296可以考虑一下这两种TEXT类型。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  2.   

    http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#string-types
    11.4. String类型
    11.4.1. CHAR和VARCHAR类型
    11.4.2. BINARY和VARBINARY类型
    11.4.3. BLOB和TEXT类型
      

  3.   


    alter table tb_name modify field_name longtext default '';直接修改字段没问题,数据还会保存的。
      

  4.   

    考虑用支持更大范围的数据类型:TINYBLOB, TINYTEXT  L+1 字节, where L < 2^8  
    BLOB, TEXT  L+2 字节, where L < 2^16  
    MEDIUMBLOB, MEDIUMTEXT  L+3 字节, where L < 2^24  
    LONGBLOB, LONGTEXT  L+4 字节, where L < 2^32 
     
      

  5.   

    这个url是一个http的网址, 我想网址无论如何长, 他都不会长到65536是否可能如下的会产生错误http://......../..jsp?a='s'$b='sss' '
      

  6.   

    http://......../..jsp?a='s'$b='sss' '你是否对单引号进行转义了? 如果字符串中包括' 需要改为 \'
      

  7.   

    不知道 ,我是接到这个case没有看到原始数据。 但是测试发生他不会报SQL Exception: Data truncation: Data too long for column 'url' at row 1 这个错误基本上可能出现在以下几种情况
    1 字段乱码产生
    2 text需要制定 (例如例如将所有的编码都设置成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)3换字段类型。
      

  8.   

    1.采取截断措施 减少url长度 varchar(255)超过定长自动截取
    前提是sqlmode设置为"";
    2.设置字符集编码 也许你url中包含了大量的无用数字和字符等等
      

  9.   

    将那个 字段 改为 utf-8这个问题请注意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;