MySQL错误: Got error 139 from storage engine这个错误是发生在用Hibernate向MySQL数据库中写值的时候
具体是,页面上有一个文本框,我填入两个字,就没问题,填入三个字就报这个错误
但是同样的页面,添加其他记录就没有什么问题,就这天记录有问题百度google找了半天,找到一个回答,说MySQL每条记录限制8000bytes
想想是有可能,因为这条出错的记录的确之前的字段存储数据比较多
这个表的字段也比较多,有大几十个,并且有很多text类型,因为填写内容的确会比较长不是新开发系统,是原有系统升级,所以改变表结构已经不太现实了
那么怎么修改能解决这个问题?
貌似在英文网站上面看到过,有配置文件可以改这个限制的,如果真的有,在什么地方改呢?比较急,希望大家帮帮忙
具体是,页面上有一个文本框,我填入两个字,就没问题,填入三个字就报这个错误
但是同样的页面,添加其他记录就没有什么问题,就这天记录有问题百度google找了半天,找到一个回答,说MySQL每条记录限制8000bytes
想想是有可能,因为这条出错的记录的确之前的字段存储数据比较多
这个表的字段也比较多,有大几十个,并且有很多text类型,因为填写内容的确会比较长不是新开发系统,是原有系统升级,所以改变表结构已经不太现实了
那么怎么修改能解决这个问题?
貌似在英文网站上面看到过,有配置文件可以改这个限制的,如果真的有,在什么地方改呢?比较急,希望大家帮帮忙
innodb的单条记录最大只能到8000字节,超长就会出错
If an InnoDB table has more than 15 text/blob fields,
attempting to insert returns an
error 139.
还是只能换成MyISAM
我的确是按照上面说的,text字段很多,内容也可能很多,超过8000个字绝对可能的,所以已经不从表结构上考虑改变了我试过了,改成MyISAM,所有问题全部消失
现在想知道的,就是InnoDB下面,能不能通过某些方法,达到支持8000个字以上的长度了如果没有办法,我就结贴了周末,再等个一天看看
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的值,不过不要太大,因为性能会受到影响。
innodb_page_size增加了以后,就能存储超过8K了?
不管怎么说,这个问题,算是有个结果了
先结贴吧