2015-10-02 22 views
5

Sau khi thực hiện truy vấn cụ thể nàyMySQL sụp đổ trên tìm kiếm Fulltext

SELECT * FROM product WHERE MATCH(description) AGAINST('+composi*' IN BOOLEAN MODE) 

MySQL 5.6.26 tai nạn với log này

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. 

Bảng product có 25'000'000 kỷ lục với cấu hình này

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; 

Môi trường máy chủ:

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 

Làm thế nào khắc phục nó?

Trả lời

2

Có thể bạn đã gặp lỗi. Bạn có thể thử:

  • Nâng cấp MySQL phiên bản mới nhất
  • Downgrading MySQL để một cái gì đó khá gần đây
  • Hãy kiểm tra để xem nếu lỗi này có thể được sao chép với các dữ liệu của bạn trên một hệ điều hành khác nhau
  • Khi bạn có dữ liệu ở trên, xem liệu bạn có thể tách nó thành tập dữ liệu tối thiểu không và sau đó báo cáo lỗi tại số http://bugs.mysql.com
  • Nếu bảng đó không phải là InnoDB, bạn có thể thử ALTER TABLE Product ENGINE=MyISAM - điều này có thể hoạt động xung quanh lỗi với chi phí của losin g khả năng giao dịch và khóa mức hàng trong bảng đó - có thể chấp nhận được nếu bạn cẩn thận. Hỗ trợ fulltext trong MyISAM là 15 tuổi, trong InnoDB nó vẫn còn khá mới và tất cả các lỗi vẫn chưa được giải quyết.
Các vấn đề liên quan