3

私のソケットファイルはここにあります:

/var/run/mysqld/mysqld.sock

私がする時:

rake thinking_sphinx:start

私は得る:

rake aborted!
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ソケット ファイルの場所を thinking_sphinx に伝えたいと思います。これはどのように可能ですか?この問題は、Slicehost でスライスのハード リブートを実行した後に発生しました。

4

4 に答える 4

5

(うまくいけば)より明確になるように編集:

次の方法で、sphinxsearchの構成ファイルで使用するmysqlソケットを指定できsphinx.confますsql_sock

sql_sock = /var/run/mysqld/mysqld.sock

sql_host(この値が実際に使用されるかどうかは設定によって異なることに注意してください)

また、thinking_sphinxの構成ファイルを使用RAILS_ROOT/config/sphinx.ymlして、これらの値を設定(上書き)することもできます。

sql_sock: /var/run/mysqld/mysqld.sock
于 2009-09-08T12:36:20.963 に答える
1

バージョンでは、ソケット パスは を介し​​て1.3.20定義できます。database.yml

# database.yml
development:
  adapter: mysql
  database: app_name_development
  username: root
  password: 
  socket: /tmp/mysql.sock

ここでthinking-sphinx、ソケット パス => を使用します/tmp/mysql.sock

于 2010-11-10T17:55:36.237 に答える
1

Sphinx にはTCP 接続が必要であると述べられている Edge Sphinx の興味深いコード スニペット。

thinking_sphinx/configuration.rb から:

def connection
# If you use localhost, MySQL insists on a socket connection, but Sphinx
# requires a TCP connection. Using 127.0.0.1 fixes that.
address = searchd.address || '127.0.0.1'
address = '127.0.0.1' if address == 'localhost'

Mysql2::Client.new(
  :host  => address,
  :port  => searchd.mysql41,
  :flags => Mysql2::Client::MULTI_STATEMENTS
)
end
于 2012-08-08T03:00:14.760 に答える
0

斧からの答えは機能しません。

commit 49f467b25075666104a46b190139dd1bdbb1452fから、ソケットを設定するために誰かがSphinxHelperでサポートを追加したことがわかります。私はこの方法を使用したことがなく、テストする時間があまりないので、あなたはこの方法を自分で使用しています。

また、不思議なことに、コミットhttp://github.com/freelancing-god/thinking-sphinx/commit/a12dbd55ed9046faf6369a3d0aa452b75a31b5b6では、database.ymlを介してソケットのサポートが追加されたようですが、現在のエッジコードを見ると、削除されたようですか?

簡単な答え:実際のmysqld.sockをsphinxが探している場所にシンボリックリンクします。

于 2009-11-02T22:12:56.413 に答える