在Elixir Ecto中加入两个属于两个数据库的表

时间:2015-05-27 02:20:01

标签: elixir ecto

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

此查询中有两个名为cloud_usageBilling.CloudUsage.Repo.all(query)的数据库

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

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,我认为我几乎无法检索add表中的数据。反之亦然

参考:

MySQL -- join between tables in 2 different databases?

1 个答案:

答案 0 :(得分:7)

您的代码非常完美。这是Ecto中的一个错误。如果你想尝试一下,我已经把它修好了。 :)