LoginSignup
16
13

More than 5 years have passed since last update.

Elixir+PhoenixでPostgreSQLで作ってしまったプロジェクトのDBをMySQL(MariaDB)に変更する

Posted at

ついつい--database mysql付け忘れてPostgreSQLになってしまったものの、プロジェクトごと作り直すのはなんか違う気がしたので、手で直してみたときの作業録です。

mix.exsを直す

まずmix.exsを修正します。

mix.exs(修正前〜抜粋)
def application do
  [mod: {Tutorial, []},
  applications: [:phoenix, :phoenix_html, :cowboy, :logger, :gettext,
                 :phoenix_ecto, :postgrex]]
end

defp deps do
  [{:phoenix, "~> 1.1.3"},
   {:phoenix_ecto, "~> 2.0"},
   {:postgrex, ">= 0.0.0"},
   {:phoenix_html, "~> 2.3"},
   {:phoenix_live_reload, "~> 1.0", only: :dev},
   {:gettext, "~> 0.9"},
   {:cowboy, "~> 1.0"}]
end

上記のpostgrexとなっているところをmariaexに直します。

mix.exs(修正後〜抜粋)
def application do
  [mod: {Tutorial, []},
  applications: [:phoenix, :phoenix_html, :cowboy, :logger, :gettext,
                 :phoenix_ecto, :mariaex]]
end

defp deps do
  [{:phoenix, "~> 1.1.3"},
   {:phoenix_ecto, "~> 2.0"},
   {:mariaex, ">= 0.0.0"},
   {:phoenix_html, "~> 2.3"},
   {:phoenix_live_reload, "~> 1.0", only: :dev},
   {:gettext, "~> 0.9"},
   {:cowboy, "~> 1.0"}]
end

configファイルの修正

次に、ドライバとか、アカウントとかが記述してあるconfigファイルを修正します。
dev.exsと、prod.secret.exsが対象ですが、どっちも同じ修正なので、dev.exsだけ。

dev.exs(修正前〜抜粋)
config :tutorial, Tutorial.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "postgres",
  password: "postgres",
  database: "tutorial_prod",
  pool_size: 20

アカウント周りは必要に応じて変更してください。

dev.exs(修正後〜抜粋)
config :tutorial, Tutorial.Repo,
  adapter: Ecto.Adapters.MySQL,
  username: "root",
  password: "",
  database: "tutorial_prod",
  pool_size: 20

最後にmix deps.get

以下コマンドを実行してmariaexを追加します。

$ mix deps.get
Running dependency resolution
Dependency resolution completed
  mariaex: 0.5.0
* Getting mariaex (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/mariaex-0.5.0.tar)
Fetched package

これでMySQLへの切り替え完了です!
割と簡単に変えられました!

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13