2015-10-15 3 views
0

Sup, Во-первых, я хочу, чтобы вы знали, что я свежий для Phoenix Framework и Elixir. Я работал над учебниками, но я столкнулся с странной проблемой. Я настроил соединение, и все работает. Но файлы миграции, похоже, не выполняются. Я написал следующий файл:Phoenix Ecto Postgres таблица, не создающая

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

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

     timestamps 
    end 
    end 
end 

Это простой стол с одним полем. Но таблица не создается в базе данных, но Ecto считает, что все в порядке:

18:22:28.669 [info] Already up 

ответ

9

Это означает, что миграция уже выполнена. В вашей базе данных должна быть таблица с именем schema_migrations, которая хранит ссылку на каждую миграцию в виде строки в таблице с меткой времени (которая является префиксом для вашего имени файла миграции).

Когда миграция выполнена, ее невозможно запустить, не откатываясь назад. Вы должны сделать это только до того, как вы нажмете свои изменения вверх по течению (т. Е. Никто не зависит от него).

mix ecto.rollback 
mix ecto.migrate 

Если выше не работает, вы можете сделать полный сброс с - это очистит все данные в базе данных:

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

хорошо .. Когда я пытаюсь ecto.rollback, он говорит уже вниз, и когда я пытаюсь выполнить ecto.migrate, он говорит уже – Haito

+1

@Haito, каков путь вашего файла миграции? – Gazler

+0

это Elixir \ hangman \ priv \ repo \ migrations \ word.exs – Haito

-2

Отбросьте базу данных и создать его снова

запустить

mix ecto.migrate 

вы хорошо идти

+0

Проблема исправлена, что я делаю неправильно, создавая файлы вручную вместо того, чтобы генерировать их – Haito

Смежные вопросы