【问题标题】:MySQL Fulltext Search Error Only On Some QueriesMySQL全文搜索错误仅在某些查询上
【发布时间】:2017-10-10 18:35:01
【问题描述】:

当我在我的 MySQL 5.6 MyISAM 表中使用全文搜索时,有时会出现错误,但大多数情况下它都可以正常工作。

这个查询工作正常

SELECT title, MATCH(title, keywords, description) AGAINST ('background+water+sea') AS 'relevance' FROM `content` WHERE 
MATCH(title, keywords, description) AGAINST ('background+water+sea');

但是这个没有

SELECT title, MATCH(title, keywords, description) AGAINST ('background+water+sea+blue') AS 'relevance' FROM `content` WHERE 
MATCH(title, keywords, description) AGAINST ('background+water+sea+blue');

它们基本相同,只有第二个也要求“蓝色”。表中有超过 100,000 行。如果在网站上运行,它会给我“#2014 - 命令不同步;您现在无法在 phpMyAdmin 中运行此命令”和“来自存储引擎的错误 -1”。

有什么想法吗?

【问题讨论】:

  • 只有从网站运行时才会出现问题?如果您在 phpmyadmin 或您正在使用的任何工具上运行脚本,您会得到同样的错误吗?
  • 如果我在 phpMyAdmin 中运行它,我会收到“#2014 - 命令不同步;您现在无法运行此命令”错误消息。如果我在网站上运行它,我会收到“来自存储引擎的错误 -1”错误消息
  • 似乎与 phpMyAdmin 中的这个 bug 相符:sourceforge.net/p/phpmyadmin/bugs/3475 据报道在 PMA 3.5 中已修复。你用的是什么版本?
  • 我从未听说过来自 MyISAM 的“Got error -1”问题。它总是与 InnoDB 相关联。您能否在您的网站上使用SHOW CREATE TABLE content; 并确认此表使用哪个引擎?同时运行 SELECT @@global.innodb_force_recovery; 并确认它为零 (0)。
  • 结果如下: CREATE TABLE content (ID mediumint(8) unsigned NOT NULL, title varchar(40) DEFAULT NULL, keywords varchar(255) DEFAULT NULL, description varchar(255) 默认空值,主键 (ID),全文键 IDX_srch (title,keywords,description) ) ENGINE=MyISAM 默认字符集=utf8

标签: mysql full-text-search fulltext-index


【解决方案1】:

来自MySQL 5.6 manual

如果您的命令不同步;你现在不能运行这个命令 您的客户端代码,您以错误的顺序调用客户端函数。

这可能发生,例如,如果您使用 mysql_use_result() 并且 在调用 mysql_free_result() 之前尝试执行新查询。 如果您尝试执行两个返回数据的查询,也会发生这种情况 中间不调用 mysql_use_result() 或 mysql_store_result()。

如果您一次执行两个或多个语句,有时会在 PHPMyAdmin 中发生此错误。检查the question有类似问题。

不幸的是,在不知道调用所有这些的代码的情况下,我只能提出这些建议。如果还不能解决问题,可以分享更多细节

【讨论】:

  • 这是整个命令,仅此而已。选择标题,匹配(标题,关键字,描述)反对('背景+水+海+蓝色')作为'相关性' FROM content WHERE MATCH(标题,关键字,描述)反对('背景+水+海+蓝色');如果我删除“蓝色”这个词,它就会成功执行。
猜你喜欢
  • 2016-02-15
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多