我有一个带有我的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时,我可以很好地连接到实例,所以我很确定我的用户名,密码和主机是正确的。
答案 0 :(得分:1)
为了解决这个问题,我在我的database.yml中添加了这行用于生产
socket: /opt/bitnami/mysql/tmp/mysql.sock
我运行了我的rails服务器,将生产指定为环境:
rails s -e production
答案 1 :(得分:0)
我认为问题在于您的开发环境指向本地的mysql,而不是RDS。 默认情况下,Rails运行开发环境而不是生产环境,所以我会尝试在开发中添加相同的生产配置:
development:
adapter: mysql2
encoding: utf8
database: mydbname
username: myusername
password: mypassword
host: mypublicdnsformydb
port: 3306
答案 2 :(得分: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/