MySQL错误: Got error 139 from storage engine这个错误是发生在用Hibernate向MySQL数据库中写值的时候
具体是,页面上有一个文本框,我填入两个字,就没问题,填入三个字就报这个错误
但是同样的页面,添加其他记录就没有什么问题,就这天记录有问题百度google找了半天,找到一个回答,说MySQL每条记录限制8000bytes
想想是有可能,因为这条出错的记录的确之前的字段存储数据比较多
这个表的字段也比较多,有大几十个,并且有很多text类型,因为填写内容的确会比较长不是新开发系统,是原有系统升级,所以改变表结构已经不太现实了
那么怎么修改能解决这个问题?
貌似在英文网站上面看到过,有配置文件可以改这个限制的,如果真的有,在什么地方改呢?比较急,希望大家帮帮忙

解决方案 »

  1.   

    用innodb?
    innodb的单条记录最大只能到8000字节,超长就会出错
      

  2.   

    or
    If an InnoDB table has more than 15 text/blob fields, 
    attempting to insert returns an
    error 139.
      

  3.   

    那有解决办法么?
    还是只能换成MyISAM
      

  4.   

    我这个表的确比较大,超过8000字是正常的,而且的确有超过15个text字段但是如果这么说,最简单的新闻发布,一个新闻的内容很容易就超过8000个字了,都不能用innorDB了?没有配置文件之类的可以修改这个的么?楼上几位高手,你们在做类似含有文章的MySQL数据库的时候,是怎么做的?
      

  5.   

    跟表结构关系就不大了
    我的确是按照上面说的,text字段很多,内容也可能很多,超过8000个字绝对可能的,所以已经不从表结构上考虑改变了我试过了,改成MyISAM,所有问题全部消失
    现在想知道的,就是InnoDB下面,能不能通过某些方法,达到支持8000个字以上的长度了如果没有办法,我就结贴了周末,再等个一天看看
      

  6.   

    看了这么多回帖,都没有看到你的版本是多少。
    1、参见BUG。
    http://bugs.mysql.com/bug.php?id=10035
    2、INNODB 的限制。
    http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
    3、参见官方论坛上的讨论。
    http://forums.mysql.com/read.php?22,63584,63584#msg-63584
    我给你一个建议。
    对于太大的内容,建议用文件,然后保存路径到数据库里。
    因为一行8K的限制刚好是半个PAGE.你可以加大默认的innodb_page_size的值,不过不要太大,因为性能会受到影响。
      

  7.   

    论坛那篇帖子我也看到了
    innodb_page_size增加了以后,就能存储超过8K了?
    不管怎么说,这个问题,算是有个结果了
    先结贴吧