私はミックスアプリに「ダミー」アプリを持っているので、最初のマイグレーションはtest/dummy/priv/repo/migrations/20160323060044_create_user.exs
にあります。レポの非標準パスを使用してectoを実行
私はこの移行を実行しますが、11:19:20.647 [info] Already up
を返します。これは私を失望させます。
は、ここに私の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/"
はここに私の移行です:
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
私は
MIX_ENV=test mix ecto.migrate -r Dummy.Repo
を実行し、already up
代わりに、移行の迷惑を取得しています。私は間違っているのですか?
私の試みは:
私は何も私の別のターンは、コードを必要とするようにした
- が起こっていない、削除してデータベースを再作成しようとしました。私は
test.exs
またはdev.exs
私の中でこれを実装しようとしたが、私は、モジュールEcto.Migrationがロードされていないと私もMIX_ENV=test mix ecto.gen.migration f -r Dummy.Repo
で偽の移行を作成しようとしました"test/dummy/priv/repo/migrations" |> Path.join("**/*.exs") |> Path.wildcard |> Enum.map(&Code.require_file/1)
見つかりませんでした `受け、それを埋めます例外を発生させ、そしてよりコードで私は
MIX_ENV=test mix ecto.migrate -r Dummy.Repo # => 12:49:00.932 [info] Already up
Iはまた、その後
Mix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]
次いで、第2のアプローチからのコードを呼び出し、シェルMIX_ENV=test
をロードしようとしました。それは戻った:私にnoop?
あなたは 'ミックスecto.gen.migrationのcreate_user'を使用して、移行を作成したことがありますか?これは、Ectoがそれを読むことができるところに常にトランザクションを置くべきです。 – tkowal
はい、私はそれをしました。 3番目のアプローチを見てください – asiniy
うわー、私は何時間も何時間もこれを扱ってきました。私は最終的にそれを 'priv'の側面に絞ったので(結果的にトラブルシューティングが行われました)、私はまったく同じ問題のあなたのポストを見つけました! 'ecto.gen.migration'コマンドが機能するならば、' ecto.migrate'コマンドも動作するはずです! – ibgib