Ich habe eine "Dummy" -App in meiner Mix-App, also ist die erste Migration in test/dummy/priv/repo/migrations/20160323060044_create_user.exs
platziert.Ecto-Migration mit nicht standardmäßigen Repo-Pfad ausführen
Ich möchte diese Migration ausführen, aber es gibt zurück, und das enttäuscht mich.
Hier ist meine test.exs
:
config :ecto_state_machine, Dummy.Repo,
adapter: Ecto.Adapters.Postgres,
username: System.get_env("USER"),
password: "posgtres",
database: "ecto_state_machine_test",
pool_size: 10,
port: 5432,
priv: "test/dummy/priv/repo/"
Hier ist meine Migration:
defmodule Dummy.Repo.Migrations.CreateUser do
use Ecto.Migration
def change do
create table(:users) do
add :state, :string, null: false
add :confirmed_at, :datetime
timestamps
end
end
end
Ich bin mit
MIX_ENV=test mix ecto.migrate -r Dummy.Repo
und ärgerlich already up
statt Migration erhalten. Was mache ich falsch?
Meine Versuche:
Ich habe versucht, und neu erstellen Datenbank zu löschen, nichts
passiertMeine andere wiederum war es, den Code zu verlangen. Ich habe versucht, dies in meinem
test.exs
oderdev.exs
zu implementieren, aber ich erhielt `Modul Ecto.Migration nicht geladen wird und nicht"test/dummy/priv/repo/migrations" |> Path.join("**/*.exs") |> Path.wildcard |> Enum.map(&Code.require_file/1)
Ich habe auch versucht, durch
MIX_ENV=test mix ecto.gen.migration f -r Dummy.Repo
eine gefälschte Migration zu schaffen gefunden werden konnte, füllen Sie es mit Code, der eine Ausnahme auslösen, und als ich hatteMIX_ENV=test mix ecto.migrate -r Dummy.Repo # => 12:49:00.932 [info] Already up
So kann es keine Repo finden. Traurig, aber wahr
Ich habe auch versucht
MIX_ENV=test
zu laden schälen, dann Code aus zweitem Ansatz aufrufe, dannMix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]
. Es kam zurück: Noop zu mir?Github Ausgabe: https://github.com/elixir-lang/ecto/issues/1428
Haben Sie Ihre Migration erstellt 'Mix ecto.gen.migration create_user' mit? Dies sollte die Transaktion immer dort platzieren, wo Ecto sie lesen kann. – tkowal
Ja, ich habe es getan. Werfen Sie einen Blick auf den 3. Ansatz – asiniy
Wow, ich habe damit stundenlang zu tun gehabt. Als ich es schließlich auf den "Priv-Aspekt" beschränkte (und folglich die Fehlersuche durchgeführt wurde), stieß ich schließlich auf Ihren Beitrag des genau gleichen Problems! Wenn der Befehl 'ecto.gen.migration' funktioniert, sollte auch der Befehl 'ecto.migrate' funktionieren! – ibgib