错误:启动包中未指定 PostgreSQL 用户名

问题描述 投票:0回答:4

我正在使用 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
4个回答
6
投票

客户端发送给服务器的StartupMessage必须包含非空用户名;正如文档所说:

启动消息(F)

[...]

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

我的猜测是您指定了一个空用户名。


5
投票

如果您没有创建新用户,则默认为您的 mac 用户名和密码。

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


0
投票

仔细检查环境变量的拼写错误,在我的例子中,我使用

PSQLS_USERNAME
(额外的 S,因为我从 POSTGRES 重命名为 PSQL 以使其更短)作为环境变量,并在连接行中使用
PSQL_USERNAME

因此,我最终得到了一段格式正确的代码,除了环境变量名称中的拼写错误(代码编辑器没有为它们添加下划线)。


0
投票

我必须从 pg_dump 15.4 升级到 16.1。

在 MacOS 上:

brew install libpq

© www.soinside.com 2019 - 2024. All rights reserved.