首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >凤凰-管理多个数据库的迁移混合任务

凤凰-管理多个数据库的迁移混合任务
EN

Stack Overflow用户
提问于 2017-04-21 16:54:47
回答 1查看 516关注 0票数 2

我已经设置了我的凤凰应用程序,这样它就可以连接到两个数据库。我在管理迁移和各种Ecto mix任务(特别是创建新迁移和回滚迁移)方面遇到了一些小麻烦。

首先,这是来自config/dev.exs的回购配置

代码语言:javascript
复制
config :phoenix_backend, PhoenixBackend.Repo,
    adapter: Ecto.Adapters.Postgres,
    username: "postgres",
    password: "postgres",
    database: "phoenix_backend_dev",
    hostname: "localhost",
    pool_size: 10

config :phoenix_backend, PhoenixBackend.SearchRepo,
   adapter: Ecto.Adapters.Postgres,
   username: "postgres",
   password: "postgres",
   database: "phoenix_backend_search_dev",
   hostname: "localhost",
   pool_size: 10

最初,我的应用程序只有一个回购,默认的Repo,我后来添加了SearchRepo

当我第一次设置SearchRepo时,我运行$ mix gen.model来在数据库中创建一个新模型。迁移进入了priv/repo/migrations,然后我调整了自动生成的模块定义,使其指向我的新数据库--我改变了。

代码语言:javascript
复制
defmodule PhoenixBackend.Repo.Migrations.CreateUserRole do

代码语言:javascript
复制
defmodule PhoenixBackend.SearchRepo.Migrations.CreateSearch do

当我运行$ mix ecto.migrate时,我得到了错误

代码语言:javascript
复制
Could not find migrations directory "priv/search_repo/migrations" for repo PhoenixBackend.SearchRepo.

因此,我创建了这个目录,将迁移移到其中,并再次运行迁移--完美地运行了它!

所以这让我想到了问题..。

我现在在priv - priv/repo/migrationspriv/search_repo/migrations中有两个迁移目录。

  1. 如果我运行$ mix ecto.migrate new_migration,这将为new_migration目录中创建一个迁移文件。
  2. 如果我运行$ mix ecto.rollback,这个只回滚priv/repo/migrations的迁移。
  3. 如果我运行$ mix ecto.migrate,这将从(两个目录)运行迁移。

所以我想知道的是,如何规范这种行为?是我正在运行的命令出了问题,还是应用程序的配置中有什么需要更改以指向这些不同的目录?

我希望能够创建迁移并将它们指向特定的目录,我也希望能够指定哪些数据库迁移并回滚到哪个目录。如何自定义此行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 17:04:18

您要寻找的选项是-r CustomRepo

代码语言:javascript
复制
$ mix ecto.gen.migration add_something -r MyApp.SearchRepo
$ mix ecto.migrate -r MyApp.SearchRepo

这都是混合的帮助。为了得到它

代码语言:javascript
复制
$ mix help ecto.gen.migration
$ mix help ecto.migrate
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43548185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档