2015-10-02 19 views
5

Po wykonaniu tego konkretnego zapytaniaMySQL crash na pełnotekstowego wyszukiwania

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

MySQL 05/06/26 krach z tym dzienniku

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. 

Tabela product ma 25'000'000 rekord z tego config

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; 

Środowisko serwera:

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 

Jak to naprawić?

Odpowiedz

2

Prawdopodobnie trafiłeś błąd. Można spróbować:

  • Uaktualnianie MySQL do najnowszej wersji
  • Obniżanie MySQL do czegoś dość niedawno
  • Sprawdź, czy bug może być powielana z danymi na innym systemie operacyjnym
  • Raz masz dane powyżej, sprawdź, czy możesz wyizolować je do minimalnego zestawu danych, a następnie zgłosić błąd pod numerem http://bugs.mysql.com
  • Jeśli ta tabela nie musi być InnoDB, możesz spróbować ALTER TABLE Product ENGINE=MyISAM - prawdopodobnie będzie to działać błąd kosztem losin g możliwości transakcyjne i blokowanie na poziomie wiersza w tej tabeli - co może być dopuszczalne, jeśli jesteś ostrożny. Obsługa Fulltext w MyISAM ma 15 lat, w InnoDB jest wciąż całkiem nowa i wszystkie błędy nie zostały jeszcze opracowane.
Powiązane problemy