我有一个"虚拟"我的混合应用中的应用,因此,它的第一次迁移放在test/dummy/priv/repo/migrations/20160323060044_create_user.exs
。
我想要运行此迁移,但它返回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未加载且无法找到
"test/dummy/priv/repo/migrations"
|> Path.join("**/*.exs")
|> Path.wildcard
|> Enum.map(&Code.require_file/1)
我还试图通过MIX_ENV=test mix ecto.gen.migration f -r Dummy.Repo
创建一个虚假的迁移,用填充异常的代码填充它,而不是我有
MIX_ENV=test mix ecto.migrate -r Dummy.Repo # => 12:49:00.932 [info] Already up
所以,它无法找到回购。悲伤,但真实
我还尝试加载shell MIX_ENV=test
,然后从第二种方法调用代码,然后调用Mix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]
。它回来了:呐喊给我?
答案 0 :(得分:0)
This is fixed in Ecto 2.0.0-rc. In previous versions, migrations would always have to be inside priv. We have removed this requirement in Ecto 2.0.