2

我制作了 2 个应用程序,应用程序 A 和应用程序 B。应用程序 A 的唯一目的是允许用户注册,而应用程序 B 的目的是从应用程序 A 中选择用户向他们发送电子邮件。由于 App A 和 B 是独立创建的,并且托管在 2 个单独的 Heroku 实例中,所以 App B 如何访问 App A 中的用户数据库?有没有办法将某些相关行从 App A 推送到 App B?

4

6 回答 6

4

目前没有办法在 Heroku 应用程序之间共享数据库。

您或许可以使用Amazon RDS插件运行专用 MySQL 实例。

另一种方法是创建 API 并在应用程序之间推送数据。您可以运行后台进程来将数据推入和推出。

于 2010-03-10T01:27:39.203 回答
3

您可以在同一个共享 PostgreSQL 数据库上连接多个 Heroku 实例,这由shared-database:5mbHeroku 上的免费插件提供。

在您拥有数据库的实例上,键入:

$ heroku config

这将显示很多设置,您将在其中看到如下内容:

DATABASE_URL => postgres://fbksgiuqlv:BuIvJDfS_eOBDJDZCc9SP@ec2-104-20-247-168.compute-1.amazonaws.com/fbksgiuqlv

这是您的实例将使用的数据库连接字符串。

然后在其他实例上,通过键入以下内容覆盖 DATABASE_URL 配置变量:

$ heroku config:add DATABASE_URL=your_new_connection_string
于 2012-02-09T18:40:13.677 回答
2

所以做了一些修改,如下所示,它起作用了

prompt$ heroku console
Ruby console for your-app.heroku.com
>> dbconfig = YAML.load(File.read('config/database.yml'))
=> {"production"=>{"encoding"=>"unicode", "port"=>5432, "adapter"=>"postgresql", "username"=>"xxxxxxxxxxxxxx", "database"=>"xxxxxxxxxxxxx", "host"=>"kklasfdsfjsfdsfsd.fsdf.dsfdsf", "password"=>"xxxxxxxxxxxxxxxxxx"}}
puts dbconfig.to_yaml
--- 
production: 
  encoding: unicode
  port: 5432
  adapter: postgresql
  username: xxxxxxxxxxx
  database: xxxxxxxxxxxxxxx
  host: ec2-50-2323kskdsakd231.amazonaws.com
  password: xxxxxxxxxxxxxx

然后将 yaml 复制并粘贴到另一个数据库的连接中

它有效!为了我!!!

于 2011-01-26T14:38:06.333 回答
1

我也在研究这个问题,我注意到现在似乎可以真正做到这一点。

请参阅: http: //newsletterer.heroku.com/2011/07(底部的“你知道吗”部分)

基本上,您设置一个应用程序,检索应用程序数据库 url,然后将该 url 添加到另一个应用程序的配置中,如下所示:

$ heroku config | grep DATABASE_URL  --app sushi
DATABASE_URL   => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf

然后,将新应用的 DATABASE_URL 设置为此值:

$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics
Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf
Restarting app... done, v74.

就是这样——现在两个应用程序将共享一个数据库。

我还没有尝试过,但我正要试一试,因为我也在考虑将现有应用程序拆分为两个应用程序。让我们希望这真的有效!

于 2011-08-07T11:55:27.240 回答
0

Heroku 实际上会覆盖您签入的 database.yml 文件,您可以使用“heroku shell”命令并键入cat config/databse.yml

它们组成了一堆随机的东西,每个应用程序都使用它们。我不相信有可能阻止他们这样做。

于 2010-03-25T00:26:58.577 回答
-3

如果您将模式与 PostgreSQL 一起使用,您可能能够做到这一点。

于 2010-03-11T21:46:22.670 回答