Phoenix setup failing: Compilation error, (KeyError) key :model not found

时光怂恿深爱的人放手 提交于 2019-12-25 09:25:06

问题


I have postgres running and can connect to it, but a brand new phoenix app via mix phoenix.new reporting. I can not complete setup, can not do ecto.create and the best I can tell is that it didn't connect to the database... or maybe it's some other bug... bascially, I don't know where to go from here.

$ psql -p 5432 -h localhost reporting_dev postgres
Password for user postgres:
psql (9.6.1, server 9.6.2)
Type "help" for help.

reporting_dev=#

And here is my config/dev.exs

$ grep Reporting.Repo -A 6 config/dev.exs
config :reporting, Reporting.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "postgres",
  password: "postgres",
  database: "reporting_dev",
  hostname: "localhost",
  pool_size: 10

but I can not complete the ecto.create

$ mix ecto.create
warning: variable "aliases" does not exist and is being expanded to "aliases()", please use parentheses to remove the ambiguity or change the variable name
  mix.exs:12

warning: variable "deps" does not exist and is being expanded to "deps()", please use parentheses to remove the ambiguity or change the variable name
  mix.exs:13

warning: variable "deps" does not exist and is being expanded to "deps()", please use parentheses to remove the ambiguity or change the variable name
  /Users/alan/Code/eltoro/reporting/deps/phoenix_ecto/mix.exs:10

warning: variable "package" does not exist and is being expanded to "package()", please use parentheses to remove the ambiguity or change the variable name
  /Users/alan/Code/eltoro/reporting/deps/phoenix_ecto/mix.exs:14

==> phoenix_ecto
Compiling 4 files (.ex)

== Compilation error on file lib/phoenix_ecto/html.ex ==
** (KeyError) key :model not found in: %Phoenix.HTML.Form{data: nil, errors: {{:., [line: 12], [{:changeset, [line: 12], nil}, :errors]}, [line: 12], []}, hidden: [], id: {:name, [line: 10], nil}, impl: Phoenix.HTML.FormData.Ecto.Changeset, index: nil, name: {:name, [line: 11], nil}, options: [], params: %{}, source: {:changeset, [line: 8], nil}}
    (stdlib) :maps.update(:model, {:model, [line: 13], nil}, %Phoenix.HTML.Form{data: nil, errors: {{:., [line: 12], [{:changeset, [line: 12], nil}, :errors]}, [line: 12], []}, hidden: [], id: {:name, [line: 10], nil}, impl: Phoenix.HTML.FormData.Ecto.Changeset, index: nil, name: {:name, [line: 11], nil}, options: [], params: %{}, source: {:changeset, [line: 8], nil}})
    lib/phoenix_html/form.ex:170: anonymous fn/2 in Phoenix.HTML.Form.__struct__/1
    (elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
    expanding struct: Phoenix.HTML.Form.__struct__/1
    lib/phoenix_ecto/html.ex:7: Phoenix.HTML.FormData.Ecto.Changeset.to_form/2

could not compile dependency :phoenix_ecto, "mix compile" failed. You can recompile this dependency with "mix deps.compile phoenix_ecto", update it with "mix deps.update phoenix_ecto" or clean it with "mix deps.clean phoenix_ecto"

And here are my basic versions

$ elixir -v
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.4.1

$ uname -a
Darwin alan-MBP.local 15.6.0 Darwin Kernel Version 15.6.0: Mon Jan  9 23:07:29 PST 2017; root:xnu-3248.60.11.2.1~1/RELEASE_X86_64 x86_64 i386 MacBookPro11,5 Darwin

$ node --version
v6.7.0

回答1:


Could it be that you are using a 1.x version of Phoenix.HTML, where as you should use 2.x.

In version 1.x, the term model was used, over schema, which is used in 2.x and in the latest Phoenix version.

https://github.com/phoenixframework/phoenix_html/blob/v1.4.0/lib/phoenix_html/form.ex#L166

vs

https://github.com/phoenixframework/phoenix_html/blob/v2.9.3/lib/phoenix_html/form.ex#L170



来源:https://stackoverflow.com/questions/42151703/phoenix-setup-failing-compilation-error-keyerror-key-model-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!