2つのデータベースに接続するようにPhoenixアプリケーションをセットアップしました。私は自分のマイグレーションやさまざまなEcto mix
タスクを管理するのに少し問題があります。具体的には、新しいマイグレーションの作成とマイグレーションのロールバックです。まず第一にPhoenix - 複数のデータベースの移行ミックスタスクの管理に関する問題
が、ここでは最初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
からレポ構成ですが、私のアプリはちょうど私が後でSearchRepo
を追加し、1つのレポ、デフォルトRepo
を持っていました。
最初にSearchRepo
を設定したとき、そのデータベースに新しいモデルを作成するために$ mix gen.model
を実行しました。移行がpriv/repo/migrations
に行き、その後、私は私の新しいデータベースを指すように自動生成されたモジュールの定義を調整する - 私は$ mix ecto.migrate
を実行したとき、私は
defmodule PhoenixBackend.SearchRepo.Migrations.CreateSearch do
に
defmodule PhoenixBackend.Repo.Migrations.CreateUserRole do
を変更し、私はエラーを得た
Could not find migrations directory "priv/search_repo/migrations" for repo PhoenixBackend.SearchRepo.
私はそのディレクトリを作成し、移行を移行して、もう一度移行を実行しました。完璧でした。
だから、これは私が今priv
に2つの移行ディレクトリを持っている...問題(複数可)に
私をもたらします - priv/repo/migrations
とpriv/search_repo/migrations
。
私は
$ mix ecto.migrate new_migration
を実行する場合、これはnew_migration
の両方のディレクトリの移行ファイルを作成します。$ mix ecto.rollback
を実行すると、は、priv/repo/migrations
からロールバックされます。$ mix ecto.migrate
を実行すると、とディレクトリの移行が実行されます。
私はこの動作をどのように標準化することができますか?私が実行しているコマンドに問題があるのですか、またはこれらの異なるディレクトリを指すように変更する必要があるアプリケーションの設定に何かがありますか?
私は移行を作成して特定のディレクトリを指していることが大好きです。どのデータベースを移行およびロールバックするかを指定できるようにしたいと思います。この動作をどのようにカスタマイズできますか?
スティーブあなたはもう一度私を保存しました! – skwidbreth
素晴らしいです。謝辞をありがとう。それをマークして忘れないでください:) –