我一直在后端使用Postgresql构建一个Lazarus Pascal程序。以前使用以下行来打开数据库时可以正常工作。
dbConn:= TPQConnection.Create(nil);
dbConn.HostName := 'localhost';
dbConn.DatabaseName:= 'dbHRS';
dbconn.UserName:='mizk';
dbConn.Password:='123';
dbConn.Open;
if dbConn.Connected Then
OpenHRSDB := true
else
OpenHRSDB := False;
但是当我从 localhost 更改为服务器的IP(在LAN上)时,程序就会停止。没有错误或警告。我不清楚发生了什么。
以下是一些可能有助于缩小问题范围的相关细节。
我现在最关心的是,当给出IP号码时,Pascal程序无法工作,以及postgres日志中的消息是什么。
非常感谢任何投入。谢谢!
编辑:以下是更多信息:
文件postgresql.conf包含以下行:
listen_addresses ='*'
port = 5430
很抱歉......这是打开连接日志后正确的日志。 在我关闭,重新启动并运行我的程序后,日志文件包含此内容:
2014-03-06 18:28:23 IST日志:数据库系统在2014-03-06 18:28:22 IST关闭 2014-03-06 18:28:23 IST LOG:已收到连接:host = [local] 2014-03-06 18:28:23 IST LOG:不完整的启动包 2014-03-06 18:28:23 IST LOG:数据库系统已准备好接受连接 2014-03-06 18:28:23 IST日志:autovacuum发射器启动 2014-03-06 18:28:24 IST LOG:已收到连接:host = [local] 2014-03-06 18:28:24 IST日志:连接授权:user = postgres database = postgres 2014-03-06 18:28:24 IST LOG:已收到连接:host = [local] 2014-03-06 18:28:24 IST日志:连接授权:user = postgres database = postgres 2014-03-06 18:28:25 IST LOG:收到的连接:host = [local] 2014-03-06 18:28:25 IST日志:连接授权:user = postgres database = postgres 2014-03-06 18:28:29 IST LOG:已收到连接:host = [local] 2014-03-06 18:28:29 IST日志:不完整的启动数据包
答案 0 :(得分:1)
当我发现这个关于PORT的链接时,我意识到有些东西丢失了: http://lists.lazarus.freepascal.org/pipermail/lazarus/2009-August/044403.html
所以我在我的代码中包含以下行来连接: dbConn.Params.Text:='port = 5430';
我不确定这是否是执行此连接字符串的最正确方法,因为我认为连接字符串中可能还有其他参数也被使用,并且上述方法可能会覆盖这些参数。因此我将此作为第一行。
所以这种方法对我有用。
我还尝试了另一种方法,但它对我不起作用。那就是使用append方法(dbConn.Params.Append)
我还发现参数区分大小写,我不得不写'端口'('端口'不起作用)。