Postgresql 角色是 db 'university' 的所有者,它的配置如下:
更改用户独木舟密码“mypassword”;
C 中的一段嵌入式 SQL 代码只是与 DB 建立连接。
printf("SQLSTATE=[%s]\n", SQLSTATE);
EXEC SQL CONNECT TO 'university' USER 'canoe/mypassword'
printf("SQLSTATE=[%s]\n", SQLSTATE);
代码被编译和链接。它在运行 postgresql 服务器的本地主机上运行并在其默认端口上侦听。
$ ecpg connection.pgc
$ gcc -I/usr/include/postgresql connection.c -o conn -lecpg
编译后的代码输出为:
SQLSTATE=[00000]
SQLSTATE=[08001]
错误代码 08001 表示“sqlclient_unable_to_establish_sqlconnection”。我已更改 postgresql 的配置以记录所有连接尝试以调试代码。
LOG:参数“log_connections”更改为“on”
LOG:00000:参数“log_error_verbosity”更改为“verbose”
但是,运行编译后的代码时,没有任何错误。当我将它与 pgsql 连接时,它有日志信息。
$ pqsql university -W
LOG:连接授权:用户=canoe 数据库=大学
我注意到的有线事情是即使我在提示后输入错误的密码,我仍然可以获得授权。但是我的一段 C 代码不起作用。
我无法解决问题或有任何想法进一步调试它。知道问题出在哪里吗?