framework docs postgresql elixir phoenix-framework ecto

postgresql - docs - adaptador Ecto.Adapters.Postgres no fue compilado



github phoenix framework (4)

Proyectos nuevos

Para crear nuevos proyectos con Ecto 3.0 , se recomienda encarecidamente que actualice al nuevo instalador phoenix 1.4.x :

$ mix archive.uninstall phx_new $ mix archive.install hex phx_new 1.4.0-rc.2

Proyectos existentes

Para actualizar sus proyectos existentes de Phoenix 1.3.x a 1.4 , lea la Guía de actualización oficial y el announcement adjunto.

TLDR es que Ecto se ha dividido en subpaquetes, y debe especificarlos explícitamente:

Elimine su dependencia explícita :ecto y actualice sus dependencias :phoenix_ecto y :ecto_sql con las siguientes versiones:

{:ecto_sql, "~> 3.0-rc"}, {:phoenix_ecto, "~> 4.0"},

No puedo crear mi proyecto Phoenix. Me encantaría algún consejo sobre cómo solucionarlo.

Detalles de la configuración:

  • Ubuntu 16.04.4 LTS
  • Erlang / OTP 21 [erts-10.1] [fuente] [64 bits] [smp: 1: 1] [ds: 1: 1: 10] [async-threads: 1] [hipe]
  • Elixir 1.7.3 (compilado con Erlang / OTP 20)
  • Mix 1.7.3 (compilado con Erlang / OTP 20)
  • Ecto v3.0.0

Estoy siguiendo a Phoenix Up and Running para hacer una aplicación.

mix phx.new hello cd hello mix ecto.create

El último comando me da:

== Compilation error in file lib/hello/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/hello/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

Tengo postgres instalados. Tengo postgres superusuario.


¿Tienes phoenix_ecto 3.5.0 en tus dependencias? La degradación a 3.4.0 funcionó para mí como una solución temporal hasta que descubro el problema subyacente.

Para forzar una baja:

  1. Ejecutar mix deps.clean --all
  2. Borre su archivo mix.lock
  3. Actualice su archivo mix.exs limitando la versión phoenix_ecto . Encuentre la línea apropiada y reemplace con: {:phoenix_ecto, ">= 3.2.0 and < 3.5.0"},
  4. Ejecutar mix deps.get

Alternativamente, si recién comienza con Phoenix, puede usar la versión 1.4 para aprender, que se lanzará pronto y no tiene este problema.

Primero elimine su archivo local actual de Phoenix:

mix archive.uninstall phx_new

Luego, para instalar la última versión de desarrollo , siga las instrucciones en https://github.com/phoenixframework/phoenix/blob/master/installer/README.md


A partir de Ecto 3.0, Ecto.Adapters.Postgres no se incluye con Ecto de manera predeterminada, por lo tanto, debe agregar ecto_sql a las dependencias de Mixfile:

########### # mix.exs # ########### defp deps do [ # (...) {:ecto_sql, "~> 3.0-rc.1"}, {:postgrex, ">= 0.0.0"} ] end # Feeling skittish about dependencies, # I usually do this instead of simply # doing `mix deps.get`: $ mix deps.clean --all $ mix do deps.get, compile

( El árbol Ecto github repo v3.0.0 recomienda {:ecto_sql, "~> 3.0"} , pero la última versión es la 3.0.0-rc.1 ) por lo tanto, no funcionará a partir de ahora. Curiosamente, no hay 3.0.0-rc.1 etiqueta 3.0.0-rc.1 en el repositorio, pero la documentación ya hace referencia a eso y también funciona con la mix . )

... o, como lo recomienda Yufrend en su respuesta , si está comenzando un nuevo proyecto de Phoenix, use los paquetes <1.4.0.

Vea la serie de José Valim "Un adelanto en Ecto 3.0" donde el primer post explica los cambios en Ecto 3.0:

Dividir Ecto en ecto y ecto_sql

Ecto 3.0 se ecto_sql en dos repositorios: ecto y ecto_sql . Desde Ecto 2.0, un mayor número de desarrolladores y equipos han estado utilizando Ecto para el mapeo y validación de datos, sin necesidad de una base de datos. Sin embargo, agregar Ecto a su aplicación aún traerá gran parte del equipaje de SQL, como adaptadores, espacios limitados y migraciones, que muchos consideraron un mensaje mixto.

En Ecto 3.0, moveremos todos los adaptadores SQL a un repositorio separado y Ecto se centrará en los cuatro bloques de construcción: esquemas, conjuntos de cambios, consultas y repositorios. Puedes ver la discusión en el tracker de temas.

Si está utilizando Ecto con una base de datos SQL, la migración a Ecto 3.0 será muy sencilla. En lugar de:

{:ecto, "~> 2.2"}

Deberías enumerar:

{:ecto_sql, "~> 3.0"}

Y si está utilizando Ecto solo para la manipulación de datos pero sin acceso a la base de datos, es solo cuestión de golpear su versión. ¡Eso es!

ACTUALIZAR

Por alguna razón, también necesitaba agregar {:plug_cowboy, "~> 1.0"} a las dependencias de Mixfile al actualizar un proyecto Phoenix 1.3 y todo comenzó a funcionar.


Instalar la nueva versión de Phoenix funcionó para mí.

Desinstalar la versión anterior:

mix archive.uninstall phx_new

Instalar nueva versión:

mix archive.install hex phx_new 1.4.0-rc.2