Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku应用程序上的远程mysql数据库_Ruby On Rails_Ruby On Rails 3_Heroku - Fatal编程技术网

Ruby on rails Heroku应用程序上的远程mysql数据库

Ruby on rails Heroku应用程序上的远程mysql数据库,ruby-on-rails,ruby-on-rails-3,heroku,Ruby On Rails,Ruby On Rails 3,Heroku,我可以从我的个人web服务器使用mysql数据库而不是heroku的数据库吗 我将生产数据库配置为: production: adapter: mysql2 database: somedatabase username: someusername password: somepassword host: 1.1.1.1:1234 但是,这不起作用,我的应用程序仍然使用heroku的共享数据库。看看。我不是说要使用它,但它让您了解需要做什么以及Herok

我可以从我的个人web服务器使用mysql数据库而不是heroku的数据库吗

我将生产数据库配置为:

production:
    adapter: mysql2
    database: somedatabase
    username: someusername
    password: somepassword
    host: 1.1.1.1:1234

但是,这不起作用,我的应用程序仍然使用heroku的共享数据库。

看看。我不是说要使用它,但它让您了解需要做什么以及Heroku如何管理database-基本上您需要为mysql实例设置一个配置变量。

Heroku忽略了您的database.yml。您需要探索John Beynon建议的Amazon RDS解决方案或其他类似插件(如果有)。在我看来,你要么重新评估你使用MySQL数据库的需求,要么寻找其他的主机。 万一您还不知道,命令:

heroku db:push
将在heroku的Postgres数据库中复制MySQL开发数据库的模式和数据。因此,坚持使用MySQL for dev是没有问题的


我希望这能有所帮助。

我写了一本gem,可能对这方面有所帮助。您可以在以下网址找到:


这是一个很古老的方法,但如果有人来找答案,这比使用gem要容易得多。只需提供一个
数据库URL
共享数据库URL
(不确定是否需要第二个)。数据库url格式为
adapter://username:password@主机名:端口/数据库
,例如,您可以执行以下操作:

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

然后设置好(只要服务器接受来自heroku主机的连接)

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地址,而不是直接给出主机名,因为对于一些共享主机服务(如godaddy),db主机名看起来像user.345432.abcd.godaddy.com,而heroku似乎无法正确解析它(个人体验),我将主机名解析为IP地址,直接使用IP就像一个符咒!此外,如果您的数据库密码有特殊字符,请确保正确转义它们(如“\!”代表“!”等等)

是的,这非常简单明了:

1-创建mysql数据库 2-创建mysql数据库用户(设置默认值) 3.1-转到Heroku面板/配置变量

3.2-点击“显示变量”并编辑(点击铅笔图标),在本例中,您要更改的变量为
数据库URL
(如果没有,则只显示一个新变量,名称为
数据库URL

3(#2)-使用命令行

heroku配置:添加数据库\u URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename

那就

heroku重启

记住语法:

DATABASE\u URL

mysql://user:password@hostnameOrIPAddress:PortNumber/databasename

MySQL DBMS的默认端口号为:
3306

这就是为什么您会看到前面提到的使用
DATABASE\uurl的示例=mysql://dbusername:dbpassword@databasehostIP:3306/databasename


希望这有帮助!!!

我发现忽略我的database.yml,并尝试使用以下命令配置database\u URL:config:add database\u URL=mysql2://user:password@host/dbname但不起作用,应用程序正在Amazon服务器上查找db。这来自日志:/app/.bundle/gems/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/client.rb:37:“连接”中:拒绝访问r用户'etok'@'ec2-174-129-89-188.compute-1.amazonaws.com'(使用密码:YES)(Mysql2::Error)谢谢Nat。我已经使用你的gem一个月了,它运行得很好!我们也已经使用了大约一年了。我在该项目中添加了一些文档,以便更容易开始。下面是我博客上的writeup链接:似乎
DATABASE\u URL
就足够了,它可以在不指定
共享数据库\u URL
的情况下运行>。此外,我想注意到,
mysql2
适配器现在比
mysql
更为常见。因此,它看起来像
mysql2://…
。当然,你必须在
gem文件中添加
gem'mysql2'
。X.509可以这样使用吗?“
万一有人
四处寻找答案”。你刚刚救了我一天。谢谢!这比我想象的要简单得多。“只要你的服务器接受来自heroku主机的连接。”,我正在部署一个PHP应用程序,heroku的主机在不断变化。我不断得到
主机'ec2-xxxxxxxxxx.compute-1.amazonaws.com'不允许连接到这个MySQL服务器
,其中xxxx是一些任意IP。我不能只允许一个特定的IP,因为它正在动态变化。你对此有什么建议吗?@augie gard不幸的是,我想你最好的办法(或者最窄的过滤器)是在你的mysql服务器中添加一个通配符帐户名,以匹配所有ec2-%.compute-1.amazonaws.com(并从那里开始工作)。我个人只会选择%.amazonaws.com并设置一个长时间的安全密码。如果你受到aws服务器的攻击,至少你知道该给谁发电子邮件。
Heroku restart