0

Rails 4 アプリの展開に Mina を使用するのは初めてです。MySQLを使ったとてもシンプルなアプリケーションです。サーバーは Digital Ocean の Ubuntu 14.04 です。サーバーに MySQL がインストールされており、database.yml にある資格情報を使用して、サーバー上の mysql CLI でログインできます。ただし、Mina が rake db:migrate を実行しようとすると、次のように失敗します。

-----> Migrating database
   $ RAILS_ENV="staging" bundle exec rake db:migrate
   rake aborted!
   Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)

/etc/mysqld/my.cnf のソケットの場所が /var/run/mysqld/mysql.sock であることを確認しました。これは database.yml 構成とも一致します。

なんで?

4

1 に答える 1

0

問題を解決する手順は次のとおりです。

ステップ 1:ホストを 127.0.0.1 に変更する

staging:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

ステップ 2:サーバー MySql への接続が 2 つあるようです。ソケット ファイルの場所を見つけるには、次のようにします。

mysqladmin variables | grep socket

私のために与えます:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!

また

mysql --help 

OS X バージョン 10.9.5 for PHP アプリケーションに XAMPP をインストールしたため、このエラーが発生しました。ここで、デフォルトのソケットの場所の 1 つを選択します。

私はデフォルトのRailsアプリを選択します:

socket: /tmp/mysql.sock

私の PHP アプリでは、XAMPP をインストールするので、ソケットをここに設定します。

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

その他 OS X でのソケットの場所

MAMPP の場合:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

MySQL からのパッケージ インストーラーの場合:

socket: /tmp/mysql.sock

Mac OS X Server にバンドルされている MySQL の場合:

socket: /var/mysql/mysql.sock

Ubuntu の場合:

socket: /var/run/mysqld/mysql.sock

詳細情報ruby​​-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s

ステップ 3:これらの設定がすべて機能しない場合は、ソケットの場所を削除できます。

staging:
  # socket: /var/run/mysqld/mysql.sock

これがお役に立てば幸いです。

于 2015-09-22T02:40:20.303 に答える