1

我不确定在哪里发布这个,所以我认为这可能是一个好地方。我想知道是否可以让 Heroku 应用程序的 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)

4

3 回答 3

0

问题不在于 Heroku,过去我已经能够通过我的托管服务提供商成功连接到外部数据库。你需要使用这个符号:

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

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

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

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

这里的问题主要取决于确定暴露给 MediaTemple 的 Heroku 服务器的 IP 地址,因为地址会随着时间而变化。

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

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

然后在部署到你的 heroku 实例后浏览这个页面,你会看到你的 IP 与每个请求都有很大的不同。

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

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

于 2014-12-15T00:27:44.357 回答
0

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

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

编辑: https://github.com/nbudin/heroku_external_db正在开发一个漂亮的宝石

于 2011-04-11T03:46:19.507 回答
0

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

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

于 2013-08-07T12:21:25.087 回答