Search code examples
ruby-on-rails-3thinking-sphinx

Can't connect to MySQL server on '127.0.0.1' (61) rails thinking_sphinx


I was upgrading from thinking_sphinx ~2.5 to 3.0.3 to follow the setup instructions for the heroku add-on flying_sphinx. The upgrade might not be necessary at all, but now I'm at it so might as well get it done.

When I try to search (e.g. Post.search("search term")) I get the following:

Can't connect to MySQL server on '127.0.0.1' (61)

I have my indices folder setup with the post_index.rb

ThinkingSphinx::Index.define :post, :with => :active_record do
  (. . . code here . . .)
end

and I have my config/thinking_sphinx.yml file

development:
 version: 3.0.3
 mysql41: 9110
 morphology: stem_en
 html_strip: 1
 min_infix_len: 2
 bin_path: "/usr/local/bin"
 searchd_binary_name: searchd
 indexer_binary_name: indexer
 host: 127.0.0.1
test:
 version: 3.0.3
 mysql41: 9110
 morphology: stem_en
 html_strip: 1
 min_infix_len: 2
production:
 version: 3.0.3
 mysql41: 9110
 morphology: stem_en
 html_strip: 1
 min_infix_len: 2

and Gemfile

gem 'mysql2',          '0.3.12b5'
gem 'thinking-sphinx', '3.0.3' #'2.0.11'
gem 'flying-sphinx',   '1.0.0' #'0.8.4'

I am running postgres locally and on heroku

Thanks!

Edit

Now my thinking_sphinx.yml looks like this:

development:
  mysql41: 9110
  morphology: stem_en
  html_strip: 1
  min_infix_len: 2
  bin_path: "/usr/local/bin"
  host: 127.0.0.1
test:
  mysql41: 9111
  morphology: stem_en
  html_strip: 1
  min_infix_len: 2
production:
  morphology: stem_en
  html_strip: 1
  min_infix_len: 2

When I tried to searchd is not currently running.

Stopped searchd daemon (pid: ).
Generating configuration to /Users/Achilles/Desktop/dev/mocs/config/development.sphinx.conf
Sphinx 2.0.6-release (r3473)
Copyright (c) 2001-2012, Andrew Aksyonoff
Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/blah/blah/blah/development.sphinx.conf'...
indexing index 'post_core'...
ERROR: index 'post_core': infixes and morphology are enabled, enable_star=0
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
Failed to start searchd daemon. Check /Users/Achilles/Desktop/dev/mocs/log/development.searchd.log.
Failed to start searchd. Check the log files for more information.

Solution

  • You'll want to change the following things:

    • Remove the version settings from your thinking_sphinx.yml file. This setting is for being clear about which version of Sphinx you're using, not Thinking Sphinx.
    • Update to TS v3.0.4 - perhaps not important, but doesn't hurt to use the latest.
    • Don't set mysql41 for your production environment - and probably best to have it set to different values for each of development and test - so daemons can run for both environments at the same time.
    • You could also remove the *_binary_name settings - given you're setting them to the default values, there's not much point.

    Once that's all changed, run rake ts:rebuild and see if you can connect... but on that point, it's worth clarifying whether you're seeing this issue locally or on Heroku?