繁体   English   中英

2 heroku 应用程序共享数据库并且不同步

[英]2 heroku apps share database and are not syncing

我有 2 个应用程序通过heroku 数据库共享工具使用相同的数据库。 我注意到正在向客户端提供的数据以某种方式仅存在于 2 个数据库中的 1 个中。 当我说 2 个数据库时,我的意思是可以通过分别从每个应用程序运行heroku run rails c访问的数据。

应用1:

> pp c.weigh_ins.pluck(:id, :date, :current_weight)
D, [2018-10-16T14:47:43.016457 #4] DEBUG -- :    (30.4ms)  SELECT "weigh_ins"."id", "weigh_ins"."date", "weigh_ins"."current_weight" FROM "weigh_ins" WHERE "weigh_ins"."client_id" = $1  [["client_id", 19305]]
[[139358, Tue, 09 Oct 2018 00:00:00 EDT -04:00, 170.0],
 [138723, Tue, 02 Oct 2018 00:00:00 EDT -04:00, 217.2], # where does this come from?
 [138708, Tue, 02 Oct 2018 00:00:00 EDT -04:00, 174.6],
 [137962, Tue, 25 Sep 2018 00:00:00 EDT -04:00, 176.6],
 [137243, Tue, 18 Sep 2018 00:00:00 EDT -04:00, 175.8],
 [136489, Tue, 11 Sep 2018 00:00:00 EDT -04:00, 177.0],
 [135792, Tue, 04 Sep 2018 00:00:00 EDT -04:00, 178.8],
 [135217, Tue, 28 Aug 2018 00:00:00 EDT -04:00, 182.4],
 [134593, Tue, 21 Aug 2018 00:00:00 EDT -04:00, 184.2],
 [133950, Tue, 14 Aug 2018 00:00:00 EDT -04:00, 186.4],
 [133320, Tue, 07 Aug 2018 00:00:00 EDT -04:00, 188.8],
 [132630, Tue, 31 Jul 2018 00:00:00 EDT -04:00, 190.6],
 [132053, Fri, 20 Jul 2018 00:00:00 EDT -04:00, 194.4]]

应用程序2:

> pp c.weigh_ins.pluck(:id, :date, :current_weight)
   (15.8ms)  SELECT "weigh_ins"."id", "weigh_ins"."date", "weigh_ins"."current_weight" FROM "weigh_ins" INNER JOIN "check_ins" ON "weigh_ins"."check_in_id" = "check_ins"."id" WHERE "weigh_ins"."deleted_at" IS NULL AND "check_ins"."deleted_at" IS NULL AND "check_ins"."client_id" = $1  ORDER BY "check_ins"."week" DESC, "check_ins"."week" ASC  [["client_id", 19305]]
   (15.8ms)  SELECT "weigh_ins"."id", "weigh_ins"."date", "weigh_ins"."current_weight" FROM "weigh_ins" INNER JOIN "check_ins" ON "weigh_ins"."check_in_id" = "check_ins"."id" WHERE "weigh_ins"."deleted_at" IS NULL AND "check_ins"."deleted_at" IS NULL AND "check_ins"."client_id" = $1  ORDER BY "check_ins"."week" DESC, "check_ins"."week" ASC  [["client_id", 19305]]
[[139358, Tue, 09 Oct 2018 00:00:00 EDT -04:00, 170.0],
 [138708, Tue, 02 Oct 2018 00:00:00 EDT -04:00, 174.6],
 [137962, Tue, 25 Sep 2018 00:00:00 EDT -04:00, 176.6],
 [137243, Tue, 18 Sep 2018 00:00:00 EDT -04:00, 175.8],
 [136489, Tue, 11 Sep 2018 00:00:00 EDT -04:00, 177.0],
 [135792, Tue, 04 Sep 2018 00:00:00 EDT -04:00, 178.8],
 [135217, Tue, 28 Aug 2018 00:00:00 EDT -04:00, 182.4],
 [134593, Tue, 21 Aug 2018 00:00:00 EDT -04:00, 184.2],
 [133950, Tue, 14 Aug 2018 00:00:00 EDT -04:00, 186.4],
 [133320, Tue, 07 Aug 2018 00:00:00 EDT -04:00, 188.8],
 [132630, Tue, 31 Jul 2018 00:00:00 EDT -04:00, 190.6],
 [132053, Fri, 20 Jul 2018 00:00:00 EDT -04:00, 194.4]]

由于两个应用程序具有相同的DATABASE_URL不应该它们都访问相同的数据库吗? 有什么方法可以使它们不同步吗? 我意识到他们有不同的查询,但他们应该返回相同的数据。

您在应用程序中的查询有所不同。 主要是,您的第一个应用程序确实会返回已删除的记录,因为没有用于deleted_at IS NULL条件(第二个应用程序还执行额外的INNER JOIN可以过滤掉更多结果)。 如果您使用的是 ActiveRecord 模型,您可能已经忘记了第一个应用程序中的默认范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM