【问题标题】:Error 1064, "You have an error in your SQL syntax" Python Django错误 1064,“您的 SQL 语法有错误” Python Django
【发布时间】:2021-09-19 05:40:11
【问题描述】:

我在我的 Django 网站发布设置中收到多个 SQL 错误。我相信这是一个版本问题,但无法指出。 该站点是使用 mysqlclient 创建的,但我已将其移至 mysqlconnector。

完整的示例错误消息是: (1064,“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'OPTION max_matches = 1000' 附近使用正确的语法”)

(1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 'group, denomination, location, affiliation,released_by, affiliations, filetypes' 行附近使用1")

MySQL 版本:8.0(仅用于 sphinx) 使用 Postgres 的数据库 使用 mysqlconnector init.py (main for site) 使用 install_as_MySQLdb() 导入 pymysql

我使用 python manage.py inspectdb>models.py 自动创建了 models.py,但不确定这是否有任何帮助(该站点提供的模型文件仅由应用程序控制)。

Django 是 2.0.13,python 是 3.9,运行 6

【问题讨论】:

  • "Database using Postgres Using mysqlconnector" -> Postgresql 和 MySQL 是不同的数据库实现。为什么这些错误消息提示您正在尝试使用 MySQL 连接器连接到 Postgresql 数据库服务器?
  • @snakecharmerb 老实说我不知道​​问题出在哪里,我只知道异常发生在 lib/python3.9/site-packages/pymysql/err.py in raise_mysql_exception 第 143 行. 但是由于它是一个 SQL 语法的东西,它必须与其中一个解释器做一些事情,对吧?

标签: mysql django django-models mysql-connector-python


【解决方案1】:

据我所知,OPTION max_matches = 1000 是 Sphinx 搜索语法,MySQL 或 PostgreSQL 不支持。 Sphinx Search 支持 MySQL 协议,因此您可以使用 MySQL 客户端连接到它。但是 Sphinx Search 支持一些 MySQL 不支持的查询语法。如果您尝试对实际的 MySQL 实例运行 Sphinx Search 查询,MySQL 将无法识别它。我认为这就是您的第一个错误中发生的情况。

第二个错误是您在 SQL 查询中使用保留关键字 group 作为列名。见https://dev.mysql.com/doc/refman/8.0/en/keywords.html

【讨论】:

  • 感谢比尔,这真的很有用!不过我确实有一些问题.... 使用 sphinx 确实需要进行 sql 连接,否则您会收到“连接被拒绝”错误,对吗?那么没有它你将如何运行 sphinx。我已经研究了第二个,它肯定有多个语法问题,它通过不是 postgres 格式的 postgres 运行行,以及其他东西......我将继续研究它以查看格式的确切来源,因为我我也在运行 psycopg2
  • 您可以将 Sphinx Search 作为独立的守护程序运行。我不会尝试在这里重新创建documentation。 FWIW,我现在大多看到人们已经切换到 ElasticSearch。
猜你喜欢
  • 2020-12-27
  • 1970-01-01
  • 2016-01-24
  • 2017-02-19
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多