MySQL全文索引的插入/更新在事务提交之前不会被处理。
【BUG重现】:
表结构:
CREATE TABLE tf (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
title varchar(200) DEFAULT NULL,
body text,
FULLTEXT KEY title (title, body) WITH PARSER ngram
) ENGINE=INNODB;
开启事务:
mysql> begin;
mysql> insert into tf values(1,'数据库','MySQL是这个世界上最流行的数据库.');
注:这里不要提交,执行
select * from tf where MATCH(title,body) AGAINST ('数据库' IN BOOLEAN MODE);
你会发现查询结果为空,但只要我commit提交,再执行上面的SQL,就可以看到结果。
mysql> commit;
mysql> select * from tf where MATCH(title,body) AGAINST ('数据库' IN BOOLEAN MODE);
你可以测试一下。^_^