【问题标题】:Connecting to local server via dBExpress通过 dBExpress 连接到本地服务器
【发布时间】:2017-06-03 15:38:05
【问题描述】:

我的 D7 dBExpress 项目应该连接到本地 Interbase XE7 服务器。 它具有通常的 DBX 设置:SqlConnection、SqlQuery、DataSetProvider 和 ClientDataSet 并执行简单的“从 mytable 中选择 *”。

我上次使用它时,它工作正常,但是今天我在 IDE 中运行它时, 我打电话时遇到异常

ClientDataSet1.Open;

在我的 FormCreate 中(该调用是项目的整个代码,顺便说一句)。这 异常是带有消息“未找到错误代码的映射”的 EDatabaseError。并发生在 TSqlConnection.DoConnect

【问题讨论】:

  • 您是否尝试过使用 IBConsole 进行连接?这说明了什么?
  • 我现在有。 IBConsole 实际上并没有列出我的数据库,只是“本地服务器 - gds_b”。当我点击它时,我得到“远程接口拒绝连接”
  • 这听起来很熟悉——我自己及时发现了这个错误。原来有什么东西把 Firebird 偷偷带到了我的机器上,它劫持了 IB 通常监听的端口。查看Services下是否有FB server在运行。如果有,请将其关闭(当然,如果 IB 服务器尚未运行,则启动它)。
  • 你是对的!它是 Firebird - 除了没有人偷窥它,我自己安装了它,没想到它会影响 Interbase。嗬!谢谢。将其发布为答案,我会接受。
  • 如此处所述,例如stackoverflow.com/q/11119683/8041231

标签: delphi delphi-7 interbase


【解决方案1】:

这听起来很熟悉——有一次我自己也遇到过这个错误,几周后我回到了一个 IB 项目。

事实证明,与此同时,有什么东西把 Firebird 偷偷带到了我的机器上,它劫持了 IB 通常监听的端口,实际上是这个 FB 服务器拒绝了连接,而不是 Interbase 的!

查看Services下是否有FB server在运行。如果有,请将其关闭(当然,如果尚未运行,则启动 IB 服务器)。然后再次尝试您的 DBX 项目。

在 IB 文档的某个地方,我发现了一些似乎表明存在一种让 FB 和 IB 服务器共存的方法,但为了避免再次陷入类似的陷阱,我编写了几个批处理文件来关闭其中一个并启动另一个。一个叫做“UseIB”,包含:

net stop "Firebird server - DefaultInstance"
net start "InterBase XE7 Server gds_db"

当然,另一个“UseFB”正好相反。

【讨论】:

  • 一个有趣的决定。 + 1 您还可以将 Firebird(或 Interbase)的默认端口 3050 更改为其他端口。然后,您只需更改连接字符串中的端口即可连接到 Interbase 或 Firebird。
猜你喜欢
  • 2020-07-15
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多