【问题标题】:Run ecto migration with non-standard path of repo使用非标准的 repo 路径运行 ecto 迁移
【发布时间】:2016-05-14 18:53:54
【问题描述】:

我的混合应用程序中有一个“虚拟”应用程序,因此,它的第一次迁移放在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 而不是迁移。我做错了什么?

我的尝试:

  1. 我尝试删除并重新创建数据库,但没有任何反应

  2. 我的另一轮是需要代码。我试图在我的test.exsdev.exs 中实现这一点,但我收到了`module Ecto.Migration is not loaded and could not be found

    "test/dummy/priv/repo/migrations" |> Path.join("**/*.exs") |> Path.wildcard |> Enum.map(&Code.require_file/1)

  3. 我还尝试通过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

所以,它找不到回购。悲伤,但真实

  1. 我还尝试加载 shell MIX_ENV=test,然后从第二种方法调用代码,然后是 Mix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]。它返回 :noop 给我?

  2. Github 问题:https://github.com/elixir-lang/ecto/issues/1428

【问题讨论】:

  • 您是否使用mix ecto.gen.migration create_user 创建了迁移?这应该始终将事务放在 Ecto 可以读取的位置。
  • 是的,我做到了。看看第三种方法
  • 哇,我已经处理这个问题好几个小时了。当我最终将其范围缩小到priv 方面(并因此完成了故障排除)时,我终于遇到了您关于完全相同问题的帖子!如果ecto.gen.migration 命令有效,那么ecto.migrate 命令也应该有效!

标签: elixir ecto


【解决方案1】:

Jose Valim 评论 at github:

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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2022-07-12
    相关资源
    最近更新 更多