Spec-Zone.ru › Phoenix

Смена баз данных

Исходный код

Приложения Phoenix по умолчанию настроены на использование PostgreSQL, но что, если мы хотим использовать другую базу данных, например MySQL? В этом руководстве мы расскажем, как изменить настройки по умолчанию — как при создании нового приложения, так и для уже существующего приложения, настроенного для работы с PostgreSQL.

Использование phx.new

Если мы собираемся создать новое приложение, настроить его для использования MySQL несложно. Достаточно передать флаг --database mysql команде phx.new, и всё будет настроено правильно.

$ mix phx.new hello_phoenix --database mysql

Это автоматически установит все необходимые зависимости и настройки. После установки этих зависимостей с помощью mix deps.get мы будем готовы начать работу с Ecto в нашем приложении.

В существующем приложении

Если у нас уже есть приложение, достаточно сменить адаптер и внести несколько небольших изменений в настройки.

Чтобы сменить адаптер, нужно удалить зависимость Postgrex и вместо неё добавить новую — MyXQL.

Откроем файл mix.exs и сделаем это.

defmodule HelloPhoenix.MixProject do
  use Mix.Project

  ...
  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  defp deps do
    [
      {:phoenix, "~> 1.4.0"},
      {:phoenix_ecto, "~> 4.4"},
      {:ecto_sql, "~> 3.13"},
      {:myxql, ">= 0.0.0"},
      ...
    ]
  end
end

Затем настроим адаптер для использования учётных данных MySQL по умолчанию, изменив config/dev.exs:

config :hello_phoenix, HelloPhoenix.Repo,
  username: "root",
  password: "",
  database: "hello_phoenix_dev"

Если у нас уже есть блок настроек для HelloPhoenix.Repo, достаточно изменить значения в соответствии с новыми. Также необходимо указать правильные значения в файлах config/test.exs и config/runtime.exs.

Осталось открыть lib/hello_phoenix/repo.ex и убедиться, что для :adapter задано значение Ecto.Adapters.MyXQL.

Теперь осталось получить новую зависимость, и можно приступать к работе.

$ mix deps.get

После установки и настройки нового адаптера можно создать базу данных.

$ mix ecto.create

База данных для HelloPhoenix.Repo создана. Теперь можно запускать любые миграции и выполнять любые другие задачи с помощью Ecto.

$ mix ecto.migrate
[info] == Running HelloPhoenix.Repo.Migrations.CreateUser.change/0 forward
[info] create table users
[info] == Migrated in 0.2s

Другие варианты

Хотя Phoenix использует проект Ecto для взаимодействия со слоем доступа к данным, существует множество других вариантов доступа к данным, некоторые из которых встроены даже в стандартную библиотеку Erlang. ETS — доступное в Ecto через etso — и DETS — это хранилища данных «ключ-значение», встроенные в Erlang/OTP. В Elixir и Erlang также есть ряд библиотек для работы с различными популярными хранилищами данных.

Мир данных открыт для вас, но в этих руководствах мы не будем рассматривать такие варианты.

← Предыдущая страница Загрузка файлов
Следующая страница → Использование SSL

Пакет Hex Предпросмотр Hex (текущий файл) Скачать версию ePub

Создано с помощью ExDoc (v0.40.3) для языка программирования Elixir

© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix.hexdocs.pm/swapping_databases.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API