Lazarus + Postgres:启动包不完整

时间:2014-03-06 11:07:19

标签: postgresql ubuntu-12.04 remote-access remote-server lazarus

我一直在后端使用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上)时,程序就会停止。没有错误或警告。我不清楚发生了什么。

以下是一些可能有助于缩小问题范围的相关细节。

  1. 我正在运行的程序来自与服务器位于同一LAN上的工作站。
  2. 两台机器都运行Ubuntu 12.04 Desktop
  3. 我可以使用PGAdmin III访问服务器上的postgres数据库,所以我猜这不是防火墙问题。
  4. 我允许ufw发布postgresql,ufw被禁用。
  5. 奇怪的是,当防火墙被禁用时,我可以使用工作站从终端SSH服务器。但是当它启用时,我不能
  6. 我现在最关心的是,当给出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日志:不完整的启动数据包

1 个答案:

答案 0 :(得分:1)

当我发现这个关于PORT的链接时,我意识到有些东西丢失了: http://lists.lazarus.freepascal.org/pipermail/lazarus/2009-August/044403.html

所以我在我的代码中包含以下行来连接: dbConn.Params.Text:='port = 5430';

我不确定这是否是执行此连接字符串的最正确方法,因为我认为连接字符串中可能还有其他参数也被使用,并且上述方法可能会覆盖这些参数。因此我将此作为第一行。

所以这种方法对我有用。

我还尝试了另一种方法,但它对我不起作用。那就是使用append方法(dbConn.Params.Append)

我还发现参数区分大小写,我不得不写'端口'('端口'不起作用)。