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

我认为问题在于您的开发环境指向本地mysql,而不是RDS。默认情况下,Rails 运行的是开发环境而不是生产环境,所以我会尝试在开发环境中添加与生产环境相同的配置:

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

这对我来说很好,添加到 Gemfile 的第一行

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

来源:Alan Ho 评论: 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 回答