Phoenix Ecto Postgres表没有创建

Hai*_*ito 1 postgresql elixir phoenix-framework

Sup,首先,我想让你知道我对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
Run Code Online (Sandbox Code Playgroud)

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

18:22:28.669 [info]  Already up
Run Code Online (Sandbox Code Playgroud)

Gaz*_*ler 16

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

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

mix ecto.rollback
mix ecto.migrate
Run Code Online (Sandbox Code Playgroud)

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

mix do ecto.drop, ecto.create, ecto.migrate
Run Code Online (Sandbox Code Playgroud)

  • @Haito删除它并使用`mix ecto.gen.migration create_words`再次创建文件 - 然后填充生成的文件并重试. (3认同)