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

ker*_*lin 8 database postgresql phoenix-framework

我正在运行 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
Run Code Online (Sandbox Code Playgroud)

有一些问答涉及这个特定的错误,但不幸的是,我发现它们没有用。所以我转过来了!

附加环境信息:Mac OS X、Postgres.app、PG 9.5 版

Kri*_*ris 14

我必须从 pg_dump 15.4 升级到 16.1。

在 MacOS 上:brew install libpq

我没有随brew 安装 postgres,因为它在 Docker 中运行。

  • 对我来说,我必须运行“brew update”才能使上述“brew install libpq”生效来解决问题。也许是因为我之前安装了libpg。 (2认同)

Lau*_*lbe 6

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

启动消息 (F)

[...]

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

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

  • 哇,错误消息怎么样,而不是说这是必需的...... (2认同)
  • 那么,在实际代码中如何做到这一点呢?知道原因固然很好,但如何解决呢? (2认同)

小智 5

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

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