有一个Heroku应用程序的DATABASE_URL指向Media Temple GS数据库

时间:2011-01-03 16:53:41

标签: mysql database heroku mediatemple

我不确定在哪里发帖,所以我认为这可能是一个好地方。我想知道是否可以将Heroku app的DATABASE_URL指向Media Temple GS数据库?我已经尝试使用以下命令建立到我的mt数据库的外部域的连接(同时允许在mt的可接受的外部IP地址中使用heroku的IP地址):" heroku config: add DATABASE_URL = mysql:// username:password @ host / databasename --app appname"并运行" heroku rake db:migrate --app appname",但它似乎不起作用。有任何想法吗?这是错误的样子:

耙子中止了!
无法在' example.com'上连接到MySQL服务器(111)

3 个答案:

答案 0 :(得分:0)

不支持从Heroku外部的计算机连接到共享的heroku数据库。但是可以使用他们的pg:ingress功能连接到专用的heroku数据库。

这实际上是heroku堆栈中的安全和资源配置功能。如果您需要连接到外部数据层,则需要为其构建API并通过它进行工作。

编辑: 在https://github.com/nbudin/heroku_external_db

处工作的是一个漂亮的宝石

答案 1 :(得分:0)

不支持从Heroku外部的计算机连接到共享的heroku数据库。但是可以使用他们的pg:ingress功能连接到专用的heroku数据库。

这实际上是heroku堆栈中的安全和资源配置功能。如果您需要连接到外部数据层,则需要为其构建API并通过它进行工作。

答案 2 :(得分:0)

问题不在于Heroku,我以前能够与我的托管服务提供商成功连接到外部数据库。你需要使用这种表示法:

    $pdoconn = new PDO('mysql:host=' . $host . ';dbname=' . $db, $user, $pwd, array( PDO::ATTR_PERSISTENT => false));

另一方面,Media temple的策略是只允许特定的IP地址从外部位置连接到Grid Server中的mysql实例runninng。

您可以按照以下步骤更改该列表:

您的域名>管理员>管理数据库>用户&设置>外部数据库>添加IP

此处的问题主要在于确定您的Heroku服务器的IP地址是否暴露给MediaTemple,因为地址会随着时间而改变。

要确定您的公开IP,您可以创建一个新文件ipcheck.php,其内容如下:

<?php
$homepage = file_get_contents('http://www.whatsmyip.org/');
echo $homepage;
?>

然后在部署到您的heroku实例后浏览此页面,您将看到您的IP与每个请求的差异非常大。

解决此问题的唯一方法是通过Proximo addon或类似设置静态IP,然后配置MediaTemple以允许来自该IP的外部连接。

为你的mysql数据库运行hostgator服务器可能更便宜(hostgator mysql数据库允许从任何地方进行外部连接)。