【问题标题】:ERROR: no PostgreSQL user name specified in startup packet错误:启动数据包中未指定 PostgreSQL 用户名
【发布时间】:2020-05-29 03:38:44
【问题描述】:

我正在使用 Phoenix 应用程序,当我尝试运行 mix ecto.migrate 时,遇到以下错误:

GenServer #PID<0.181.0> terminating
** (Postgrex.Error) FATAL (invalid_authorization_specification): no PostgreSQL user name specified in startup packet
    (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol

有一些关于这个特定错误的问答,但很遗憾,我没有发现它们有用。所以我转过来!

其他环境信息:Mac OS X、Postgres.app、PG 9.5 版

【问题讨论】:

    标签: database postgresql phoenix-framework


    【解决方案1】:

    从客户端发送到服务器的StartupMessage必须包含一个非空的用户名;正如the documentation 所说:

    启动消息 (F)

    [...]

    协议版本号后跟一对或多对参数名称和值字符串。最后一个名称/值对之后需要一个零字节作为终止符。参数可以按任何顺序出现。用户是必需的,其他是可选的。 [...]

    我猜你指定了一个空的用户名。

    【讨论】:

    • 哇,错误信息怎么样,而不是说这是必需的......
    • 那么,你如何在实际代码中做到这一点?知道为什么很好,但你如何解决它?
    【解决方案2】:

    如果你没有创建新用户,默认是你的mac用户名和密码。

    这来晚了,但我希望它对某人有所帮助。

    【讨论】:

      【解决方案3】:

      仔细检查您的环境变量的拼写错误,在我的情况下,我使用PSQLS_USERNAME(额外的 S,因为我从 POSTGRES 重命名为 PSQL 以使其更短)作为环境变量,并在连接行中使用PSQL_USERNAME。

      所以我最终得到了一个格式正确的代码块,除了环境变量名称中的拼写错误(代码编辑器没有下划线)。

      【讨论】:

        猜你喜欢
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        • 2012-10-21
        • 2016-08-29
        • 2020-12-23
        • 2018-01-25
        • 1970-01-01
        相关资源
        最近更新 更多