【问题标题】:Phoenix Framework: why mix ecto.create and mix phx.server not working?Phoenix Framework:为什么混合 ecto.create 和混合 phx.server 不起作用?
【发布时间】:2019-06-19 07:11:52
【问题描述】:

我正在 Windows 10 中安装 phoenix 框架,并且我已经创建了一个应用程序“项目”。当我输入 mix ecto.create 和 mix phx.server 时出现错误。有人可以帮我解决这个问题吗?谢谢。

mix ecto.create 发生错误

[error] GenServer #PID<0.318.0> terminating ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused (db_connection) lib/db_connection/connection.ex:163: DBConnection.Connection.connect/2 (connection) lib/connection.ex:622: Connection.enter_connect/5 (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3 Last message: nil State: Postgrex.Protocol** (Mix) The database for Project.Repo couldn't be created: an exception was raised:/* (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused( db_connection) lib/db_connection/connection.ex:163: DBConnection.Connection.connect/2 (connection) lib/connection.ex:622: Connection.enter_connect/5 (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3  

混合 phx.server 发生错误

** (UndefinedFunctionError) function Plug.Cowboy.child_spec/1 is undefined (module Plug.Cowboy is not available)
            Plug.Cowboy.child_spec([scheme: :http, plug: {ProjectWeb.Endpoint, []}, options: [dispatch: [_: [{"/phoenix/live_reload/socket/websocket", Phoenix.Endpoint.CowboyWebSocket, {Phoenix.Transports.WebSocket, {ProjectWeb.Endpoint, Phoenix.LiveReloader.Socket, [path: "/websocket", serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}], timeout: 60000, transport_log: false, compress: false]}}}, {"/socket/websocket", Phoenix.Endpoint.CowboyWebSocket, {Phoenix.Transports.WebSocket, {ProjectWeb.Endpoint, ProjectWeb.UserSocket, [path: "/websocket", serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}], timeout: 60000, transport_log: false, compress: false]}}}, {:_, Plug.Adapters.Cowboy.Handler, {ProjectWeb.Endpoint, []}}]], port: 4000, otp_app: :project]])
            (phoenix) lib/phoenix/endpoint/cowboy_adapter.ex:96: Phoenix.Endpoint.CowboyAdapter.child_spec/3
            (phoenix) lib/phoenix/endpoint/supervisor.ex:111: anonymous fn/6 in Phoenix.Endpoint.Supervisor.server_children/4
            (elixir) lib/enum.ex:1940: Enum."-reduce/3-lists^foldl/2-0-"/3
            (phoenix) lib/phoenix/endpoint/supervisor.ex:102: Phoenix.Endpoint.Supervisor.server_children/4
            (phoenix) lib/phoenix/endpoint/supervisor.ex:67: Phoenix.Endpoint.Supervisor.init/1
            (stdlib) supervisor.erl:295: :supervisor.init/1
            (stdlib) gen_server.erl:374: :gen_server.init_it/2
            (stdlib) gen_server.erl:342: :gen_server.init_it/6
            (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
** (Mix) Could not start application project: Project.Application.start(:normal, []) returned an error: shutdown: failed to start child: ProjectWeb.Endpoint
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function Plug.Cowboy.child_spec/1 is undefined (module Plug.Cowboy is not available)
            Plug.Cowboy.child_spec([scheme: :http, plug: {ProjectWeb.Endpoint, []}, options: [dispatch: [_: [{"/phoenix/live_reload/socket/websocket", Phoenix.Endpoint.CowboyWebSocket, {Phoenix.Transports.WebSocket, {ProjectWeb.Endpoint, Phoenix.LiveReloader.Socket, [path: "/websocket", serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}], timeout: 60000, transport_log: false, compress: false]}}}, {"/socket/websocket", Phoenix.Endpoint.CowboyWebSocket, {Phoenix.Transports.WebSocket, {ProjectWeb.Endpoint, ProjectWeb.UserSocket, [path: "/websocket", serializer: [{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}], timeout: 60000, transport_log: false, compress: false]}}}, {:_, Plug.Adapters.Cowboy.Handler, {ProjectWeb.Endpoint, []}}]], port: 4000, otp_app: :project]])
            (phoenix) lib/phoenix/endpoint/cowboy_adapter.ex:96: Phoenix.Endpoint.CowboyAdapter.child_spec/3
            (phoenix) lib/phoenix/endpoint/supervisor.ex:111: anonymous fn/6 in Phoenix.Endpoint.Supervisor.server_children/4
            (elixir) lib/enum.ex:1940: Enum."-reduce/3-lists^foldl/2-0-"/3
            (phoenix) lib/phoenix/endpoint/supervisor.ex:102: Phoenix.Endpoint.Supervisor.server_children/4
            (phoenix) lib/phoenix/endpoint/supervisor.ex:67: Phoenix.Endpoint.Supervisor.init/1
            (stdlib) supervisor.erl:295: :supervisor.init/1
            (stdlib) gen_server.erl:374: :gen_server.init_it/2
            (stdlib) gen_server.erl:342: :gen_server.init_it/6
            (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3

我希望在浏览器中输出 Phoenix 框架欢迎页面。

【问题讨论】:

    标签: postgresql phoenix-framework


    【解决方案1】:

    第一条消息说您的应用程序无法连接到数据库。我假设(基于端口)您正在使用 PostgreSQL。在这种情况下,您需要确保在您的计算机上安装并运行 PostgreSQL 服务器(您可以在此处找到安装说明:https://www.postgresql.org/download/

    关于第二条消息,Phoenix Github issues 上已经提到了这个问题,你可以在这里找到它:https://github.com/phoenixframework/phoenix/issues/3113。那里提到的解决方案包括: 1.更新Phoenix版本(v1.4.0应该解决了这个错误,检查你的mix.exs文件是什么版本) 2. 将:plug_cowboy, "~&gt; 2.0" 添加到您的依赖项列表中(确保在此之后运行mix deps.get

    【讨论】:

    • 当我输入 cd project &amp;&amp; mix phx.server 时出现错误,它说:** (File.Error) could not remove files and directory recursively not owner (elixir) lib/file.ex:1252: File .rm_rf!/1 (mix) lib/mix/tasks/deps.compile.ex:66: Mix.Tasks.Deps.Compile.compile/2 中的匿名 fn/4
    • 我已经按照你的指示做了,我遇到了新的错误。
    • 我的建议是更新 Phoenix 安装程序,更新您的 Elixir,然后从头开始一个新的应用程序。抱歉,您的版本不兼容,导致您的应用处于不良状态。
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2016-12-24
    • 2017-11-05
    • 2016-12-23
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多