MySQL Assertion Failure in thread
此查询为什么失败?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | SELECT SUB_COMMODITY, `VOL` AS Sales, `VOL_CHANGE` AS Dollar_change, `VOL_SHARE` AS Dollar_share, `VOL_SHARE_CHANGE` AS Dollar_share_change, `U_VOL` AS Unit_sales, `UVOL_CHANGE` AS Unit_change, `UVOL_SHARE` AS Unit_share, `UVOL_SHARE_CHANGE` AS Unit_share_change, `VOL_MKT_SHARE` AS Market_share, `PERIOD` FROM `calculatedsummary` WHERE WEEK = 52 AND PERIOD BETWEEN '2012-03-01' AND '2012-03-31' AND MKT = '000 Total Market' AND COMMODITY = 'CONDIMENTS SAUCES' AND SUB_COMMODITY = 'BBQ SAUCE' AND BRAND_FAMILY_DESC = 'Total' AND session_id = 'ADBCDEFGHIJQLMNOPQRSTUVWXYZ' |
MySQL服务器日志:
- InnoDB:文件row0sel.c第2441行中的线程2292断言失败
- InnoDB:失败断言:buf data_len <= original_buf buf_len
- InnoDB:我们有意生成一个内存陷阱。
- InnoDB:将详细的错误报告提交到http://bugs.mysql.com。
- InnoDB:如果您反复断言失败或崩溃,甚至
- InnoDB:mysqld启动后,可能立即
- InnoDB:腐败
- InnoDB表空间。请参阅
- InnoDB:http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
- InnoDB:关于强制恢复。
- InnoDB:线程1544在文件os0sync.c第474行中停止
- InnoDB:线程2028在文件os0sync.c行781中停止
并且还会收到#2013错误-查询期间失去与MySQL服务器的连接
但是如果我改变
session_id = 'ADBCDEFGHIJQLMNOPQRSTUVWXYZ'
TO
session_id LIKE '%ADBCDEFGHIJQLMNOPQRSTUVWXYZ%'
blockquote>
我解决了问题,
显然,我正在使用的表将50多个字段设置为VARCHAR 255,并且太大了,因此通过将字段大小减小为准确的大小即可解决问题。