Как запустить миграционный файл в Elixir? - PullRequest
0 голосов
/ 11 мая 2018

Я получил файл 20180423091126_create_reference_book.exs

defmodule Simula.Repo.Migrations.CreateReferenceBook do
  use Ecto.Migration

  def change do
    create table(:reference_books) do
      add(:owner_id, :integer, default: 0)
      add(:owner_entity, :text, default: "")
      add(:name, :text, default: "")
      # количество уровней 0 - не ограничено
      add(:levels, :integer, default: 1)
      add(:entity, :text, default: "")
      add(:props, :map)
      add(:status, :integer, default: 1)
    end
  end
end

Я сделал новый проект через $ mix new project1. Затем поместите файл миграции в папку lib. Я пытаюсь сделать микс $ iex -S, но получаю ошибку.

** (CompileError) lib/reference_item.ex:2: module Ecto.Schema is not loaded and could not be found

Как правильно сделать миграцию?

1 Ответ

0 голосов
/ 13 мая 2018

Когда вы создаете новый проект с mix new project1, он создаст простой elixir проект.Вам нужно выполнить три шага.

  1. Добавление ecto как зависимости в mix.exs

    {:postgrex, ">= 0.0.0"},
    {:ecto, "~> 2.1"}
    
  2. Добавление конфигурации для подключения к базе данных в config.exs

    config :project1, ecto_repos: [Project1.Repo]
    
    config :project1, Project1.Repo,
     adapter: Ecto.Adapters.Postgres,
     database: "project1",
     username: "postgres",
     password: "postgres",
     hostname: "localhost",
     port: "5432"
    
  3. Добавление модуля репо в repo.ex в каталоге lib.

    defmodule Project1.Repo do
     use Ecto.Repo,
     otp_app: :two
    end
    

После этого вы можете либо создатьновая миграция с использованием mix ecto.gen.migration create_reference_book, которая создаст для вас файл в priv/repo/migrations/20180513070540__create_reference_book.exs, и вы можете вставить содержимое или вручную создать каталог priv/repo/migrations/ и вставить свой файл.

Наконец, запустите mix ecto.create для созданиябазы данных и mix ecto.migrate для создания таблиц в базе данных.

...