【问题标题】:Mysql2::Error sphinxql: syntax error, unexpected ',', expecting $end near ', @@SESSION.sql_auto_is_null = 0Mysql2::Error sphinxql: 语法错误,意外 ',',期待 $end near ',@@SESSION.sql_auto_is_null = 0
【发布时间】:2013-10-01 10:45:04
【问题描述】:

所以,我有带有 MySQL 服务器的 Rails 应用程序。我安装了 Sphinx、Thinking Sphinx 和 MySQL2-gem。然后我开始为 Sphinx 搜索创建一个搜索表单:

<%= form_for(@posts) do |d| %>

到目前为止一切顺利。直到我收到一条错误消息(由于专门创建了该表单。我已经运行了我的 MySQL 服务器并且我的应用程序正在使用它。)

Can't connect to MySQL server on '127.0.0.1'

当然。这显然是config/database.yml 的端口问题,所以我将其从以下位置切换:

development:
...
...
host: localhost

到:

development:
...
...
host: 127.0.0.1

好吧,它显然现在找到了服务器,但抛出了一个错误:

Mysql2::Error
sphinxql: syntax error, unexpected ',', expecting $end near ',   @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483, @@SESSION.sql_mode = 'STRICT_ALL_TABLES''

我真的不知道这意味着什么。

我检查了完整跟踪第一行中指示的文件:

activerecord (4.0.0)     lib/active_record/connection_adapters/abstract_mysql_adapter.rb:284:in `query'
activerecord (4.0.0)   lib/active_record/connection_adapters/abstract_mysql_adapter.rb:284:in `execute'
activerecord (4.0.0) lib/active_record/connection_adapters/mysql2_adapter.rb:220:in `execute'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:778:in    `configure_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/mysql2_adapter.rb:265:in `configure_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/mysql2_adapter.rb:38:in `initialize'
activerecord (4.0.0) lib/active_record/connection_adapters/mysql2_adapter.rb:20:in `new'
activerecord (4.0.0) lib/active_record/connection_adapters/mysql2_adapter.rb:20:in `mysql2_connection'

我检查了文件,它们甚至没有提到任何值。这让我很困惑。另请注意,这些文件至少有几个月的历史,并且直到现在都没有出现错误。

欢迎所有想法。我对 MySQL 甚至 Sphinx 都很陌生,所以我什至不知道从哪里开始。

【问题讨论】:

    标签: mysql ruby-on-rails sphinx thinking-sphinx mysql2


    【解决方案1】:

    mysql2 显然是在第一次连接到服务器时尝试设置一堆会话变量(它显然希望它是一个 mysql 服务器,所以会理解那个查询)

    Sphinx 不是 mysql,也不懂很多 mysql 命令。

    也许你可以使用 https://github.com/rails/rails/pull/8346 告诉 mysql2 不要尝试将所有这些无意义的变量发送到 sphinx 服务器。

    【讨论】:

      【解决方案2】:

      发生了一些奇怪的事情 - 您得到的错误来自 Sphinx,但堆栈跟踪来自 ActiveRecord,而不是 Thinking Sphinx。

      您能否确认您没有将开发环境的 config/database.yml 中的端口设置为 9306,这是 Sphinx 的默认端口?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        相关资源
        最近更新 更多