我已经设置了我的凤凰应用程序,这样它就可以连接到两个数据库。我在管理迁移和各种Ecto mix任务(特别是创建新迁移和回滚迁移)方面遇到了一些小麻烦。
首先,这是来自config/dev.exs的回购配置
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,然后我调整了自动生成的模块定义,使其指向我的新数据库--我改变了。
defmodule PhoenixBackend.Repo.Migrations.CreateUserRole do至
defmodule PhoenixBackend.SearchRepo.Migrations.CreateSearch do当我运行$ mix ecto.migrate时,我得到了错误
Could not find migrations directory "priv/search_repo/migrations" for repo PhoenixBackend.SearchRepo.因此,我创建了这个目录,将迁移移到其中,并再次运行迁移--完美地运行了它!
所以这让我想到了问题..。
我现在在priv - priv/repo/migrations和priv/search_repo/migrations中有两个迁移目录。
$ mix ecto.migrate new_migration,这将为new_migration在和目录中创建一个迁移文件。$ mix ecto.rollback,这个只回滚priv/repo/migrations的迁移。$ mix ecto.migrate,这将从(两个目录)运行迁移。所以我想知道的是,如何规范这种行为?是我正在运行的命令出了问题,还是应用程序的配置中有什么需要更改以指向这些不同的目录?
我希望能够创建迁移并将它们指向特定的目录,我也希望能够指定哪些数据库迁移并回滚到哪个目录。如何自定义此行为?
发布于 2017-04-21 17:04:18
您要寻找的选项是-r CustomRepo。
$ mix ecto.gen.migration add_something -r MyApp.SearchRepo
$ mix ecto.migrate -r MyApp.SearchRepo这都是混合的帮助。为了得到它
$ mix help ecto.gen.migration
$ mix help ecto.migratehttps://stackoverflow.com/questions/43548185
复制相似问题