我可以从我的个人网络服务器而不是heroku的数据库中使用mysql数据库吗?
我按照以下方式配置了我的生产数据库:
production:
adapter: mysql2
database: somedatabase
username: someusername
password: somepassword
host: 1.1.1.1:1234
但是,这不起作用,我的应用仍然使用heroku的共享数据库。
答案 0 :(得分:49)
这已经过时了但是如果有人在寻找答案的情况下,它比使用宝石容易得多。只需提供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
然后重新部署您的应用。它将读取您的DATABASE_URL
并从中生成database.yml。默认端口已经是3306,因此在您的情况下,网址中不需要它。部署时,您可能会注意到它生成了database.yml:
-----> Writing config/database.yml to read from DATABASE_URL
然后设置(只要您的服务器接受来自heroku主机的连接。
答案 1 :(得分:8)
我写过一篇可能有助于此的宝石。您可以在以下网址找到它:
答案 2 :(得分:4)
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
然后,做一个
Heroku restart
应该这样做。
重要说明:我建议您使用数据库主机IP地址,而不是直接使用主机名,coz,与godaddy等一些共享主机服务,db主机名看起来像 user.345432.abcd.godaddy .com 似乎heroku无法正确解决它(个人经验),我将主机名解析为IP地址并使用IP直接像魅力一样工作!此外,如果您的数据库密码有特殊字符,请确保正确地转义它们(例如'\!'代表'!'等等。)
答案 3 :(得分:1)
看看Heroku Amazon RDS addon。我不是说使用它,但它让你深入了解你需要做什么以及Heroku如何管理数据库 - 基本上你需要为你的mysql实例设置一个配置变量。
答案 4 :(得分:1)
Heroku忽略了你的database.yml。您将需要探索John Beynon建议的Amazon RDS解决方案或其他类似的插件(如果有的话)。 IMO,您将不得不重新评估您使用MySQL数据库的需求或查找其他主机。 如果您还不知道,请执行以下命令:
heroku db:push
将在heroku的Postgres数据库中复制MySQL开发数据库的架构和数据。所以坚持使用MySQL开发是没问题的。
我希望有所帮助。
答案 5 :(得分:0)
是的,这是非常直接和简单的:
1 - 创建mysql db 2 - 创建mysql db user(设置默认值) 3.1 - 转到Heroku面板/配置变种
3.2 - 在这种情况下点击“显示变种”并编辑(点击铅笔图标)你要更改的那个DATABASE_URL
(如果不存在,只有DATABASE_URL
的新标记为heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename
名)
3(#2) - 使用命令行
heroku restart
然后只是
DATABASE_URL
请记住语法:
mysql://user:password@hostnameOrIPAddress:PortNumber/databasename
3306
MySQL DBMS的默认端口号是:DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
这就是您之前使用%p
希望这有帮助!!!