1

Rails コードを含む EC2 インスタンスがあり、Amazon RDS と通信するように設定しようとしていますが、Rails サーバーを起動しようとすると、修正方法がわからないエラーが発生します。

/opt/bitnami/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)

私のdatabase.ymlファイルには、これがあります:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: development
  pool: 5
  username: root
  password: secret
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  database: mydbname
  username: myusername
  password: mypassword
  host: mypublicdnsformydb
  port: 3306

RDS インスタンスを EC2 と同じセキュリティ グループに割り当てました。

22 (SSH)    0.0.0.0/0
80 (HTTP)   0.0.0.0/0   
443 (HTTPS) 0.0.0.0/0

PC の CIDR を追加すると、インスタンスに問題なく接続できるので、ユーザー名、パスワード、およびホストが正しいことを確信できます。

4

3 に答える 3

1

これを修正するために、本番用に database.yml にこの行を追加しました

socket: /opt/bitnami/mysql/tmp/mysql.sock

そして、本番環境を環境として指定して、Rails サーバーを実行しました。

rails s -e production
于 2013-02-28T03:32:47.357 に答える
0

これは私にとってはうまくいきました.Gemfileの最初の行に追加してください

if RUBY_VERSION =~ /1.9/
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end

ソース: アラン・ホー コメント: http://www.a.rnaud.net/2011/10/how-to-fix-invalid-byte-sequence-in-us-ascii-in-bundler-installation/

于 2014-08-14T04:01:48.073 に答える
0

問題は、開発環境が RDS ではなく mysql ローカルを指していることだと思います。デフォルトでは、Rails は本番環境ではなく開発環境を実行するため、本番環境と同じ構成を開発環境に追加してみます。

 development:
  adapter: mysql2
  encoding: utf8
  database: mydbname
  username: myusername
  password: mypassword
  host: mypublicdnsformydb
  port: 3306
于 2013-02-22T19:59:34.073 に答える