Я пытаюсь подключиться к базе данных по модулю pgsql. Но у меня есть eacces ошибка. База данных в клиенте командной строки работает нормально.
Это часть соединительного кода (может быть, вы можете мне посоветовать, как сделать этот код лучше):Erlang - подключение к postgreSQL на OpenShift
init([]) ->
case os:getenv("OPENSHIFT_POSTGRESQL_DB_HOST") of
false ->
Host = "127.0.0.1";
Host ->
ok
end,
case os:getenv("OPENSHIFT_POSTGRESQL_DB_USERNAME") of
false ->
User = "chat_admin";
User ->
ok
end,
case os:getenv("OPENSHIFT_POSTGRESQL_DB_PASSWORD") of
false ->
Password = "1234";
Password ->
ok
end,
case os:getenv("PGDATABASE") of
false ->
Database = "chat_database";
Database ->
ok
end,
Port = 5432,
io:format("DB: ~s ~s ~s ~s ~w~n", [Host, User, Password, Database, Port]),
{ok, C} = pgsql:connect(Host, User, Password, [{database, Database}, {port, Port}]),
{ok, C}.
Программа показывает эту строку:
DB: 127.10.206.130 adminyp4clna TDpRnwsUeJFP chat 5432
А потом он умирает со стеком ошибок:
{"init terminating in do_boot",{{case_clause,{error,{{shutdown, failed_to_start_child,chatserver_db,{{badmatch,{error,eacces}},[{pgsql_sock,command,2,[{file,"src/pgsql_sock.erl"},{line,163}]},{gen_
server,try_handle_call,4,[{file,"gen_server.erl"},{line,607}]},{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,639}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}}},{chats
erver_app,start,[normal,[]]}}}},[{chatserver,ensure_started,1,[{file,"chatserver.erl"},{line,14}]},{chatserver,start,0,[{file,"chatserver.erl"},{line,7}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}