我在我的混合應用程序中有一個「虛擬」應用程序,因此,它的第一個遷移是放置在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未加載,無法找到"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
所以,它不能找到一個回購協議。悲傷,但真正
我還試圖加載殼
MIX_ENV=test
,然後從第二方法調用代碼,然後Mix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]
。它返回:對我不利?
你有使用'混合ecto.gen.migration create_user'創建遷移?這應該始終將Ecto可以讀取的交易放置在該位置。 – tkowal
是的,我做到了。看看第三種方法 – asiniy
哇,我已經處理了幾個小時。當我最終縮小到「priv」方面(因此故障排除完成)後,我終於遇到了同樣問題的帖子!如果'ecto.gen.migration'命令有效,那麼'ecto.migrate'命令也可以工作! – ibgib