[英]Erlang and PostgreSQL
我尝试使用erlang和epgsql执行简单的PostgreSQL查询。
我做:
{ok, C} = pgsql:connect("localhost", "shk", "qwerty", [{database, "mydb"}]).
>> {ok,<0.34.0>}
然后:
{ok, Cols, Rows} = pgsql:squery(C, "select * from users").
但是我得到了错误:
=ERROR REPORT==== 27-Apr-2012::17:58:23 ===
** State machine <0.34.0> terminating
** Last message in was {'EXIT',<0.32.0>,
{{badmatch,
{error,
{error,'ð\236ð¨ð\230ð\221ð\232ð\220',<<"42P01">>,
<<208,190,209,130,208,189,208,190,209,136,208,181,
208,189,208,184,208,181,32,34,109,121,100,98,34,
32,208,189,208,181,32,209,129,209,131,209,137,
208,181,209,129,209,130,208,178,209,131,208,181,
209,130>>,
[{position,<<"15">>}]}}},
[{erl_eval,expr,3}]}}
** When State == ready
** Data == {state,undefined,<0.35.0>,5000,
[{<<"application_name">>,<<>>},
{<<"client_encoding">>,<<"UTF8">>},
{<<"DateStyle">>,<<"ISO, DMY">>},
{<<"integer_datetimes">>,<<"on">>},
{<<"IntervalStyle">>,<<"postgres">>},
{<<"is_superuser">>,<<"off">>},
{<<"server_encoding">>,<<"UTF8">>},
{<<"server_version">>,<<"9.0.7">>},
{<<"session_authorization">>,<<"shk">>},
{<<"standard_conforming_strings">>,<<"off">>},
{<<"TimeZone">>,<<"posixrules">>}],
undefined,undefined,undefined,
{30932,488494147},
{statement,undefined,undefined,undefined},
73}
** Reason for termination =
** {{badmatch,{error,{error,'ð\236ð¨ð\230ð\221ð\232ð\220',<<"42P01">>,
<<208,190,209,130,208,189,208,190,209,136,208,181,
208,189,208,184,208,181,32,34,109,121,100,98,34,
32,208,189,208,181,32,209,129,209,131,209,137,
208,181,209,129,209,130,208,178,209,131,208,181,
209,130>>,
[{position,<<"15">>}]}}},
[{erl_eval,expr,3}]}
我怎么了 我该如何解决?
谢谢。
如果我识别出字符,错误字符串似乎是俄语。
要查看响应,可以使用以下命令:
io:format("~ts",[<<208,190,209,130,208,189,208,190,209,136,208,181,
208,189,208,184,208,181,32,34,109,121,100,98,34,
32,208,189,208,181,32,209,129,209,131,209,137,
208,181,209,129,209,130,208,178,209,131,208,181,
209,130>>]).
отношение "mydb" не существует
快速谷歌翻译使我认为数据库mydb不存在或您没有使用它的权限。
尝试简单地做
Response = pgsql:squery(C, "select * from mydb"),
io:format("~p~n",[Response]).
并查看他从服务器还给了什么,也许您有错字或表格不存在等。
还可以查看此http://www.erlangatwork.com/2009/01/erlang-and-postgresql.html
从epgsql 文档 :
失误
来自PostgreSQL后端的错误以{error,#error {}}的形式返回,有关记录的定义,请参见pgsql.hrl。 epgsql函数还可能返回{error,What}其中以下之一:
{unsupported_auth_method,方法}-不支持必需的auth方法超时-请求超时关闭-连接已关闭sync_required-发生错误,必须调用pgsql:sync
尝试包含pgsql.hrl,捕获错误并打印错误消息,这应该为您指明正确的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.