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
에서 REPO 구성입니다, 내 응용 프로그램은 그냥 나중에 SearchRepo
을 추가, 하나 개의 repo, 기본 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/repo/migrations
및 priv/search_repo/migrations
-
그래서이 문제 (들)에 저를 제공합니다 ...
는 지금 priv
두 마이그레이션 디렉토리를 가지고있다. 내가 $ mix ecto.migrate new_migration
을 실행하면
,이
new_migration
모두 디렉토리에 대한 마이그레이션 파일을 생성합니다.내가
이 만 롤$ mix ecto.rollback
를 실행하면priv/repo/migrations
에서 마이그레이션을 백업 할 수 있습니다.$ mix ecto.migrate
을 실행하면 모두 디렉터리에서 마이 그 레이션이 실행됩니다.
그렇다면이 동작을 어떻게 표준화 할 수 있습니까? 실행중인 명령에 문제가 있습니까? 아니면 이러한 여러 디렉토리를 가리 키도록 변경해야하는 앱 구성에 무엇이 있습니까?
저는 마이그레이션을 생성하고 특정 디렉토리를 가리킬 수 있기를 바랍니다. 마이그레이션하는 데이터베이스와 롤백 할 대상을 지정할 수 있기를 바랍니다. 어떻게이 동작을 사용자 정의 할 수 있습니까?
스티브 당신은 나를 다시 구 했어요! – skwidbreth
굉장합니다. 감사합니다. 대답으로 표시하는 것을 잊지 마세요 :) –