LoginSignup
5
3

More than 5 years have passed since last update.

Phoenix のUp to RunにてMix ecto.createのerror解決方法

Last updated at Posted at 2018-10-30

mix ecto.create で急にerrorがで始めた時の解決方法

対象者

2018.10.30近辺でPhoenixのチュートリアルにて学習開始し始めた初学者向け

なぜ書くのか?

Phoenixの公式ドキュメントと、フレームワークの構成が変更中の差分が発生している時に起こり得る初学者が辛い時期の差分解決としてのメモ
* というか、自分のため。
* ちなみに、mix phx.serverでエラーがでる人の解決方法はこちら:Phoenix 最初の第一歩 Mix phx.serverでerrorの解決方法に記載してます。

事件は再び起きた!

mix ecto.create

を打つと、次のエラーが!!!

Compiling 13 files (.ex)
warning: retrieving the :adapter from config files for ElixirSc.Repo is deprecated.
Instead pass the adapter configuration when defining the module:

    defmodule ElixirSc.Repo do
      use Ecto.Repo,
        otp_app: :hello,
        adapter: Ecto.Adapters.Postgres

  lib/ecto/repo/supervisor.ex:100: Ecto.Repo.Supervisor.deprecated_adapter/3
  lib/ecto/repo/supervisor.ex:64: Ecto.Repo.Supervisor.compile_config/2
  lib/elixir_sc/repo.ex:2: (module)
  (elixir) src/elixir_compiler.erl:71: :elixir_compiler.dispatch/4
  (elixir) src/elixir_compiler.erl:68: :elixir_compiler.compile/3
  (elixir) src/elixir_module.erl:281: :elixir_module.eval_form/6
  (elixir) src/elixir_module.erl:79: :elixir_module.compile/5
  (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
  (elixir) src/elixir.erl:265: :elixir.eval_forms/4
  (elixir) src/elixir_compiler.erl:49: :elixir_compiler.eval_forms/3
  (elixir) src/elixir_lexical.erl:17: :elixir_lexical.run/2
  (elixir) src/elixir_compiler.erl:23: :elixir_compiler.quoted/2
  (elixir) lib/kernel/parallel_compiler.ex:206: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6


== Compilation error in file lib/elixir_sc/repo.ex ==
** (ArgumentError) adapter Ecto.Adapters.Postgres was not compiled, ensure it is correct and it is included as a project dependency
    lib/ecto/repo/supervisor.ex:71: Ecto.Repo.Supervisor.compile_config/2
    lib/elixir_sc/repo.ex:2: (module)
    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:206: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6

で解決方法は以下です。
※下記の1.などの数字は打たない。 順番を示している物です。

1. mix deps.clean --all
2. rm -rf mix.lock
3. mix.exsを書き換える。書き換えは以下参照

mix.exsの書き換え
befor

defp deps do
    [
      {:phoenix, "~> 1.3.4"},
      {:phoenix_pubsub, "~> 1.0"},
      {:phoenix_ecto, ">= 3.2.},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.10"},
      {:phoenix_live_reload, "~> 1.0", only: :dev},
      {:gettext, "~> 0.11"},
      {:cowboy, "~> 1.0"}
    ]
  end

After
※ 今回は、{:phoenix_ecto, ">= 3.2}のところを次のように書き換えるのが目的ですが、{:phoenix_ecto, ">= 3.2.0 and < 3.5.0"}ついでに、phx.serverでerrorになる原因の箇所も追記しておく{:plug_cowboy, "~> 1.0"}

defp deps do
    [
      {:phoenix, "~> 1.3.4"},
      {:phoenix_pubsub, "~> 1.0"},
      {:phoenix_ecto, ">= 3.2.0 and < 3.5.0"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.10"},
      {:phoenix_live_reload, "~> 1.0", only: :dev},
      {:gettext, "~> 0.11"},
      {:cowboy, "~> 1.0"},
      {:plug_cowboy, "~> 1.0"}
    ]
  end

上記の書き換えが終わったら、次のコマンドを打つと、mix ecto.createで無事に成功し、mix phx.serverで無事に立ち上がる。

1. mix deps.get
2. mix ecto.create
3. mix phx.server

Elixir の勉強会を毎週火曜日10時または、11時から13時までやってます。基本はオンラインで、月に1回
オフラインで会ってやってます。興味ある方は声かけてください。

ちなみに、最近覚えたてのReactでYOSUKENAKAO.meというサイトを立ち上げました。
バック側の仕組みをElixirで作りたいと奮闘してますw

5
3
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
5
3