sql_query:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法
Posted
技术标签:
【中文标题】sql_query:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法【英文标题】:sql_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 【发布时间】:2017-11-23 10:07:16 【问题描述】:我是 mysql 和 sphinx 的新手,在开始实际项目之前尝试动手操作。 我想在 sphinxsearch 中的 2 个表上应用 UNION ALL。下面是我的sql查询
sql_query = \
(SELECT users.id AS uid, users.fname, users.lname, users.email \
FROM users) \
UNION ALL \
(SELECT documents.id AS diid, documents.description \
FROM documents);
但是当我使用 index 命令时,它会显示错误
ERROR: index 'my_search': sql_query: You have an error in your SQL 句法;检查与您的 MySQL 服务器版本相对应的手册 在'FROM users)附近使用正确的语法UNION ALL SELECT documents.id AS dii' 在第 1 行 (DSN=mysql://root:***@localhost:3306/testsphinx)。
【问题讨论】:
为什么"\"
在查询中?
sphinx 中多行查询的标准做法
【参考方案1】:
我认为 UNION 中的两个“子查询”应该具有相同的架构。即数据库将生成一个带有列的结果集。它只是行将来自不同的表。
如果想在 SPhinx 中索引两个表 - 在一个索引中,最好使用多个源
source users
...
sql_query = \
SELECT users.id AS uid, users.fname, users.lname, users.email \
FROM users
...
source documents
...
sql_query = \
SELECT documents.id AS diid, documents.description \
FROM documents
...
index index1
source users
source documents
path = /var/sphinx/index1
....
但也可以使它们过于独立的索引。这提供了 MOST 灵活性,如果需要,可以一起查询它们
sphinx> SELECT * from users,documents WHERE MATCH('toad')
或者也可以单独查询它们。
【讨论】:
抱歉回复晚了,我们会测试并回复您。谢谢以上是关于sql_query:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 对应的手册
SQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在 '0 附近使用的正确语法
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法
#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ')' 附近使用的正确语法