Mysql2 ::错误sphinxql:语法错误,意外',',期待$ end near',@@ SESSION.sql_auto_is_null = 0

时间:2013-10-01 10:45:04

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

所以,我有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都很陌生,所以我甚至不知道从哪里开始。

2 个答案:

答案 0 :(得分:0)

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

Sphinx不是mysql,也不了解很多mysql命令。

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

答案 1 :(得分:0)

奇怪的事情正在发生 - 你得到的错误来自Sphinx,但堆栈追踪来自ActiveRecord,而不是Thinking Sphinx。

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