Объединить две таблицы, принадлежащие двум базам данных в Elixir Ecto

В Elixir с Ecto можно объединить две разные таблицы (на одном хосте), принадлежащие двум разным базам данных.

В этом запросе есть две базы данных с именами cloud и cloud_usage.

Когда я выполняю запрос, какое репо мне следует использовать?

Billing.CloudUsage.Repo.all(query)

or

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 -- соединение между таблицами в двух разных базах данных?


person 王志軍    schedule 27.05.2015    source источник
comment
Пожалуйста, укажите конкретную ошибку, которую вы получаете.   -  person Patrick Oscity    schedule 27.05.2015
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?. Кстати, это заранее спасибо, а не спасибо заранее.   -  person John Saunders    schedule 27.05.2015
comment
Пожалуйста, укажите ошибку, которую вы получаете, и версию Ecto. Также обратите внимание, что в вашем запросе есть опечатка. Должно быть , on: cucu, а не , on cucu.   -  person José Valim    schedule 27.05.2015
comment
Пожалуйста, не публикуйте скриншоты, вместо этого вставьте код в свой вопрос и правильно отформатируйте его, используя кнопку {} в редакторе. Вы должны публиковать только соответствующие части кода, а не ненужные комментарии. Если вы хотите получить хорошие ответы, вы должны сделать это как можно проще для читателей.   -  person Patrick Oscity    schedule 27.05.2015


Ответы (1)


Ваш код идеален. Это ошибка Экто. Я исправил это в мастере, если вы хотите попробовать. :)

person José Valim    schedule 27.05.2015
comment
Хосе, сработало!! Очень ценю вашу работу! Чтобы попробовать мастер-экто, мне нужно изменить файл mix.exs. {:ecto, github: "elixir-lang/ecto"}, - person 王志軍; 29.05.2015