dor*_*kon 36 ruby-on-rails heroku ruby-on-rails-3
我可以从我的个人Web服务器而不是heroku的数据库中使用mysql数据库吗?
我像这样配置了我的生产数据库:
production:
adapter: mysql2
database: somedatabase
username: someusername
password: somepassword
host: 1.1.1.1:1234
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,我的应用程序仍然使用heroku的共享数据库.
Vin*_*nce 50
这已经很老了,但是如果有人到处寻找答案,那就比使用宝石容易得多.只需提供一个(DATABASE_URL并且SHARED_DATABASE_URL不确定是否需要第二个).数据库url格式是adapter://username:password@hostname:port/database,例如,你会这样做:
heroku config:add DATABASE_URL=mysql://etok:somepassword@<your-server>:3306/etok
heroku config:add SHARED_DATABASE_URL=mysql://etok:somepassword@79.101.41.213:3306/etok
Run Code Online (Sandbox Code Playgroud)
然后重新部署您的应用.它会DATABASE_URL从中读取并生成database.yml.默认端口已经是3306,因此在您的情况下,网址中不需要它.部署时,您可能会注意到它生成了您的database.yml:
-----> Writing config/database.yml to read from DATABASE_URL
Run Code Online (Sandbox Code Playgroud)
然后你被设置(只要你的服务器接受来自heroku主机的连接.
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
Run Code Online (Sandbox Code Playgroud)
然后,做一个
Heroku restart
Run Code Online (Sandbox Code Playgroud)
应该这样做。
重要提示:我建议您使用数据库主机 IP 地址而不是直接提供主机名,因为使用一些共享托管服务(例如 Godaddy),db 主机名看起来像user.345432.abcd.godaddy.com,而 heroku 似乎无法为了正确解决它(个人经验),我将主机名解析为 IP 地址并直接使用 IP 就像一个魅力!此外,如果您的数据库密码包含特殊字符,请确保正确转义它们(例如 '\!' 代表 '!' 等等......)
| 归档时间: |
|
| 查看次数: |
19696 次 |
| 最近记录: |