Phoenix Ecto Postgres表未创建

时间:2015-10-15 16:33:05

标签: postgresql elixir phoenix-framework

燮, 首先,我想让你知道我对Phoenix Framework和Elixir很新鲜。我正在通过教程工作,但我遇到了奇怪的问题。我配置了连接,一切正常。但是迁移文件似乎没有被执行。我写了以下文件:

defmodule Hangman.Repo.Migrations.CreateWords do
  use Ecto.Migration

  def change do
    create table(:words) do
      add :content, :string

      timestamps
    end
  end
end

这只是一个包含一个字段的简单表。但是Table没有在数据库中创建,但Ecto认为一切正常:

18:22:28.669 [info]  Already up

3 个答案:

答案 0 :(得分:15)

这意味着已经执行了迁移。数据库中应该有一个名为schema_migrations的表,它将对每个迁移的引用存储为表中的一行,其中包含时间戳(迁移文件名的前缀)。

执行迁移后,如果不回滚,则无法再次运行迁移。您只应在上游推送更改之前执行此操作(即没有其他人依赖它)。

mix ecto.rollback
mix ecto.migrate

如果以上操作不起作用,您可以执行完全重置 - 这将清除数据库中的所有数据:

mix do ecto.drop, ecto.create, ecto.migrate

答案 1 :(得分:0)

这看起来像是一个非常老的问题,但仅用于记录 我认为mix ecto.reset是您要查找的单个命令。

答案 2 :(得分:-2)

删除数据库并再次创建

运行

mix ecto.migrate

你很高兴