Ошибка при выполнении экто-миграции

Я новичок в Эликсире и Фениксе. Я пытался запустить миграцию для нескольких файлов миграции с помощью mix ecto.migrate, но выдает эту ошибку,

18:27:24.471 [info]  == Running FatLobster.Repo.Migrations.CreateRecipeTable.change/0 forward
** (Ecto.MigrationError) cannot execute command outside of block
    (ecto) lib/ecto/migration/runner.ex:139: Ecto.Migration.Runner.subcommand/1
    _build/dev/lib/fat_lobster/priv/repo/migrations/20160423115340_create_recipe_table.exs:5: FatLobster.Repo.Migrations.CreateRecipeTable.change/0
    (stdlib) timer.erl:197: :timer.tc/3
    (ecto) lib/ecto/migration/runner.ex:25: Ecto.Migration.Runner.run/6
    (ecto) lib/ecto/migrator.ex:121: Ecto.Migrator.attempt/6
    (ecto) lib/ecto/migrator.ex:71: anonymous fn/4 in Ecto.Migrator.do_up/4
    (ecto) lib/ecto/pool.ex:292: Ecto.Pool.with_rollback/3
    (ecto) lib/ecto/adapters/sql.ex:582: Ecto.Adapters.SQL.transaction/8
    (ecto) lib/ecto/pool.ex:244: Ecto.Pool.outer_transaction/6
    (ecto) lib/ecto/adapters/sql.ex:551: Ecto.Adapters.SQL.transaction/3
    (ecto) lib/ecto/migrator.ex:226: anonymous fn/4 in Ecto.Migrator.migrate/4
    (elixir) lib/enum.ex:1088: Enum."-map/2-lists^map/1-0-"/2
    (ecto) lib/mix/tasks/ecto.migrate.ex:63: anonymous fn/4 in Mix.Tasks.Ecto.Migrate.run/2
    (elixir) lib/enum.ex:604: Enum."-each/2-lists^foreach/1-0-"/2
    (elixir) lib/enum.ex:604: Enum.each/2
    (mix) lib/mix/cli.ex:58: Mix.CLI.run_task/2
    (elixir) lib/code.ex:363: Code.require_file/2

А вот и Миграция,

defmodule FatLobster.Repo.Migrations.CreateRecipeTable do
  use Ecto.Migration

  def change do
    add :recipe_title, :string
    add :recipe_description,  :string

    add :cover_img, :string
    add :picture_one, :string
    add :picture_two, :string
    add :picture_three, :string

    add :user_id, :integer
    add :upvote_count, :integer
    add :downvote_count, :integer

    timestamps
  end
end

Теперь, что действительно идет не так здесь? чего мне действительно не хватает? искать что-то конкретное?


person Mahabub Islam Prio    schedule 23.04.2016    source источник
comment
Не могли бы вы опубликовать исходный код миграции CreateRecipeTable?   -  person Dogbert    schedule 23.04.2016
comment
@Dogbert привет, я только что отредактировал вопрос.   -  person Mahabub Islam Prio    schedule 23.04.2016
comment
Я могу воспроизвести ошибку... ** (FunctionClauseError) no function clause matching in Ecto.Migration.table/2 (ecto) lib/ecto/migration.ex:400: Ecto.Migration.table("recipes", []) _build/dev/lib/my_app/priv/repo/migrations/20160423173600_create_recipe.exs:5: MyApp.Repo.Migrations.CreateRecipe.change/0 ... используя строку вместо атома. То есть у вас могло быть create table("recipes") do, а должно быть create table(:recipes) do.   -  person Wendy Smoak    schedule 23.04.2016


Ответы (1)


Вам не хватает блока create table(...):

defmodule FatLobster.Repo.Migrations.CreateRecipeTable do
    use Ecto.Migration

    def change do
        create table(:recipes) do
            add :recipe_title, :string
            add :recipe_description,  :text
            add :cover_img, :string
            add :picture_one, :string
            add :picture_two, :string
            add :picture_three, :string

            add :user_id, :integer
            add :upvote_count, :integer
            add :downvote_count, :integer

            timestamps
        end
    end
end

Дополнительная информация здесь: https://hexdocs.pm/ecto/Ecto.Migration.html#create/1

person psantos    schedule 23.04.2016
comment
Ну это то, что я пропустил наверняка. Но до сих пор я не получаю свой результат. - person Mahabub Islam Prio; 23.04.2016
comment
@code.prio ошибка такая же? что за новая ошибка? - person psantos; 23.04.2016
comment
(FunctionClauseError) нет соответствия предложения функции в Ecto.Migration.table/2 (ecto) lib/ecto/migration.ex:363: Ecto.Migration.table(recipes, []) _build/dev/lib/fat_lobster/priv/repo /migrations/20160423115340_create_recipe_table.exs:5: FatLobster.Repo.Migrations.CreateRecipeTable.change/0 - person Mahabub Islam Prio; 23.04.2016
comment
И да, тип Text не подходит, поэтому я изменил его на строку - person Mahabub Islam Prio; 23.04.2016
comment
@code.prio, пожалуйста, обновите свой вопрос, добавив новый код и ошибку - person psantos; 23.04.2016
comment
все сделано ... я не знаю, что произошло, но после создания модели и перезапуска сервера все заработало !!! - person Mahabub Islam Prio; 23.04.2016
comment
Спасибо !!! но можете ли вы просто изменить текст типа схемы на строку ?? таким образом, я могу отметить ваш ответ как правильный. - person Mahabub Islam Prio; 23.04.2016
comment
почему строка, а не атом? - person psantos; 23.04.2016