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

fquxozlt  于 12个月前  发布在  PostgreSQL
关注(0)|答案(4)|浏览(154)

我正在使用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

字符串
这里有一些关于这个错误的Q&A,但是我没有发现它们有什么用,很不幸,所以我转到这里!
其他环境信息:Mac OS X,Postgres.app,PG版本9.5

6jygbczu

6jygbczu1#

从客户端发送到服务器的 StartupMessage 必须包含一个非空的用户名;如the documentation所说:
StartupMessage(F)
[...]
协议版本号后面是一对或多对参数名称和值字符串。在最后一个名称/值对之后需要一个零字节作为终止符。参数可以以任何顺序出现。user是必需的,其他是可选的。[...]
我的猜测是你指定了一个空的用户名。

xmq68pz9

xmq68pz92#

如果你没有创建一个新用户,默认是你的mac用户名和密码.
这是迟到了,但我希望它能帮助一些人。

xxslljrj

xxslljrj3#

我不得不从pg_dump 15.4升级到16.1。
在MacOS上:brew install libpq

6ie5vjzr

6ie5vjzr4#

仔细检查环境变量的拼写错误,在我的例子中,我使用PSQLS_USERNAME(额外的S,因为我将POSTGRES重命名为PSQL以使其更短)作为环境变量,并在连接行中使用PSQL_USERNAME
所以我最终得到了一段格式正确的代码,除了环境变量名中的错别字(代码编辑器没有给它们加下划线)。

相关问题