5

在 Elixir 中,使用 Ecto 是否可以连接属于不同两个数据库的两个不同表(在同一主机中)。

在此查询中调用cloud了两个数据库cloud_usage

当我执行查询时,我应该使用哪个 Repo?

Billing.CloudUsage.Repo.all(query)

或者

Billing.Cloud.Repo.all(query)

    query = from cucu in "cloud_usage.cloud_usage",
        inner_join: cv in "cloud.volumes", on: cucu.usage_id == cv.id,
          where: cucu.account_id == ^account_id,
          where: cucu.usage_id == 6,
          where: like(cucu.description, ^vol_description),
          where: cucu.start_date >= ^start_datetime,
          where: cucu.start_date <= ^end_datetime,
       group_by: cucu.usage_id,
       group_by: cucu.zone_id,
         select: {cucu.usage_id, cucu.zone_id, cucu.size, sum(cucu.raw_usage)}
   result  = Billing.CloudUsage.Repo.all(query)

当我调用该函数时,我得到了错误

** (Mariaex.Error) (1146): Table 'cloud_usage.cloud_usage.cloud_usage' doesn't exist

我知道为什么会这样。但是如果我使用Billing.Cloud.Repo.all(query),我想我几乎无法检索cloud_usage.cloud_usage表中的数据。反之亦然

参考:

MySQL - 在 2 个不同数据库中的表之间连接?

4

1 回答 1

7

你的代码很完美。这是 Ecto 中的一个错误。如果您想尝试一下,我已经在 master 中修复了它。:)

于 2015-05-27T18:15:24.297 回答