我的php代码生成一个sql查询,如下所示:
SELECT id, title, files, rating, DATE_FORMAT(date, '%d %M %Y') AS fancydate
FROM ArtArchive
WHERE CONTAINS (tags, 'Pepper')
ORDER BY date DESC
它返回错误:
HY000 - 3055 - Geometry byte string must be little endian.
标签是一个VARCHAR(255)索引为FULLTEXT
我通过使用tags LIKE '%Pepper%'
得到了查询,所以我确定CONTAINS是有原因的。
我无法弄清楚这个错误意味着什么,也不知道我对所有事情的几何的处理方式:我只是想在一个中找到单词 文本。
在检查了多个示例之后,我很确定我一直在使用正确的语法。我还尝试了以下内容:CONTAINS (tags, '"Pepper"')
,CONTAINS (tags, 'Pepper')
,CONTAINS (tags, "'Pepper'")
,但没有不同的结果。
我正在尝试不使用IN或LIKE,因为我打算在tags字段中一次搜索多个值。我已经将它调整到示例中的一个值,直到我完全开始工作。
答案 0 :(得分:0)
MySQL不支持CONTAINS()
进行文本搜索,正如您所期望的那样:
MySQL在处理时只识别CONTAINS SQL函数 空间数据。它需要两个图形对象作为参数,和 返回1或0,具体取决于第一个对象是否完全包含 第二。设计为OpenGIS框架的实现, MySQL CONTAINS函数对普通字符串不起作用 如果你尝试它会产生错误。 MySQL只识别LIKE 处理信息串时的STRCMP和STRCMP功能。
找到该信息here。