执行此特定查询后
SELECT * FROM product WHERE MATCH(description) AGAINST('+composi*' IN BOOLEAN MODE)
MySQL 5.6.26崩溃了这个日志
Timestamp, Thread, Type, Details
2015-10-02 11:51:31, 1308, Note, C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe: ready for connections.
, , , Version: '5.6.26-log' socket: '' port: 3306 MySQL Community Server (GPL)
, , , 2015-10-02 12:06:58 c18 InnoDB: Assertion failure in thread 3096 in file fts0que.cc line 3659
, , , InnoDB: Failing assertion: !query->intersection
, , , InnoDB: We intentionally generate a memory trap.
, , , InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
, , , InnoDB: If you get repeated assertion failures or crashes, even
, , , InnoDB: immediately after the mysqld startup, there may be
, , , InnoDB: corruption in the InnoDB tablespace. Please refer to
, , , InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
, , , InnoDB: about forcing recovery.
使用此配置,表产品具有25’000’000记录
CREATE TABLE `product` (
`Id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`IdPrice` int(11) unsigned NOT NULL,
`Description` text NOT NULL,
PRIMARY KEY (`Id`),
KEY `Fk_IdPrice_idx` (`IdPrice`),
FULLTEXT KEY `Idx_Description` (`Description`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
服务器环境:
Amazon EC2 t2.medium (2 CPU, 4GB RAM)
Windows Sever 2012 R2
MySQL 5.6.26 (x86)
MY.INI
[client]
no-beep
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port = 3306
datadir=D:/MySQL_Data/Data
character-set-server=utf8
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-output=FILE
general-log=0
slow-query-log=1
server-id=1
max_connections=151
query_cache_size=1M
table_open_cache=2000
tmp_table_size=67M
thread_cache_size=10
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=124M
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K
innodb_additional_mem_pool_size=9M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=5M
innodb_buffer_pool_size=405M
innodb_log_file_size=48M
innodb_thread_concurrency=8
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
query_cache_type=1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
ft_min_word_len = 2
general_log_file = "D:/MySQL_Log/general.log"
log-error = "D:/MySQL_Log/error.log"
lower_case_table_names = 2
如何解决?
最佳答案 你可能遇到了一个bug.你可以试试:
>将MySQL升级到最新版本
>将MySQL降级为最新版本
>检查是否可以使用不同操作系统上的数据重现该错误
>获得上述数据后,查看是否可以将其与最小数据集隔离,然后在http://bugs.mysql.com报告错误
>如果该表不必是InnoDB,您可以尝试ALTER TABLE产品ENGINE = MyISAM – 这可能会以失去事务功能和该表中的行级锁定为代价来解决这个问题 – 如果你是这样的话可能会接受小心. MyISAM中的全文支持已有15年历史,在InnoDB中它仍然相当新,所有的错误还没有解决.