如何使用epgsql(Erlang)连接到PostgreSQL?

如何使用epgsql(Erlang)连接到PostgreSQL?,postgresql,erlang,Postgresql,Erlang,我想使用类似于的Erlang和epgsql运行一个简单的PostgreSQL查询。我越来越 ** exception error: no match of right hand side value {error, {authentication, [{severity,'Ð\222Ð\220Ð\226Ð\235Ð\236'}, {code,"28000"}, {message,[208,191,208,190,208,187,209

我想使用类似于的Erlang和epgsql运行一个简单的PostgreSQL查询。我越来越

** exception error: no match of right hand side value 
{error,
    {authentication,
        [{severity,'Ð\222Ð\220Ð\226Ð\235Ð\236'},
         {code,"28000"},
         {message,[208,191,208,190,208,187,209,140,208,183,208,190,208,178,208,176,209,130,208,181|...]},
         {file,"auth.c"},
         {line,302},
         {routine,"auth_failed"}]}}

我的PostgreSQL实例运行良好,我可以向数据库中添加一个表或运行简单的查询。但是我需要用epgsql来完成。此外,我无法读取错误消息,这是我可以看到的:

[208,191,208,190,208,187,209,140,208,183,208,190,208,178,208,176,209,130,208,181|...]

我安装了egpsql,进行了直接测试,并确认
connect
的第二个参数是用户名,第三个参数是密码:

{ok, C} = pgsql:connect("localhost", "username", "password", [{database, "db_name"}]).
{ok, Columns, Rows} = pgsql:squery(C, "select * from myschema.mytable").

错误消息告诉您,连接失败并返回身份验证错误,而不是返回{ok,C}。到目前为止,我无法为您提供更多帮助,但您应该查看connect参数和身份验证数据。如果您有源代码,可能可以通过读取第302行附近的auth.c文件来获得更多信息。这是PostgreSQL错误28000无效授权规范。你确定你给出了正确的用户名吗?我认为第三个参数必须是username,但在教程中第三个参数是password。那么第二个参数是什么呢?我想我的PostgreSQL中没有正确的用户。我可以在一个客户机上使用用户“postgres”,但其他客户机会抛出类似auth error(错误的密码或?)的错误。也许您知道添加用户的正确方法?可以使用SQL命令创建Postgres用户帐户和密码。该命令可用于授予该帐户权限。然而,还有其他因素会影响一个人的身份验证能力。
{ok, C} = pgsql:connect("localhost", "username", "password", [{database, "db_name"}]).
{ok, Columns, Rows} = pgsql:squery(C, "select * from myschema.mytable").