【问题标题】:Connecting Delphi 10.1 to Interbase XE7 Desktop in the Rad Studio Development Environment在 Rad Studio 开发环境中将 Delphi 10.1 连接到 Interbase XE7 桌面
【发布时间】:2016-09-06 17:52:58
【问题描述】:

我想在我的开发环境中使用 IB XE7 的桌面版本,但无法使连接正常工作。

最初的应用程序使用了完整的 IB 服务器版本,我现在想在成本更低的单 PC 类型应用程序上运行该应用程序,并选择了 IB 桌面版本。

Rad Studio 10.1 Berlin 在 W7 64 位虚拟机上运行。 FireDac 是数据库连接组件。 IB XE7 Desktop 是开发 PC 上的数据库服务器。

应用程序的目标是具有 W7 32 位的 VM,该 VM 上有另一个 IB XE7 桌面。

我可以构建 32 位应用程序,在将 FireDac 连接组件协议字段更改为“本地”而不是 TCP/IP 后,它将连接到目标 PC 上的 IB XE7 桌面(在 VM 中运行 W7 32 位),有些东西我在堆栈溢出中阅读。

我无法工作的是开发环境中的数据库连接。

我先安装了64位版本的IB,然后卸载了,试了32位版本,结果还是一样。

在线阅读了一些连接问题后,我尝试在服务器名称字段中输入“gds_db”和“localhost/gds_db”,但它仍然不起作用,尽管它确实改变了错误。


错误 - 服务器名称中没有任何内容


[FireDAC][Phys][IB]数据库不可用。



将“gds_db”放入服务器名称后出错


[FireDAC][Phys][IB]无法完成对主机“gds_db”的网络请求。

找不到主机。

在主机文件或域名服务中找不到指定的名称..


首先尝试安装64位IB,然后删除所有找到的gsd文件,然后删除注册表项,并安装32位版本。问题仍然存在。

注意:Database Workbench 5 可以正常连接到同一 VM 上的数据库。

欢迎任何想法。

谢谢。

詹姆斯·F.

【问题讨论】:

  • 两件事:a)您需要检查服务器的实际实例名称。 iirc,IB的“锯掉”版本使用gds_db以外的东西。 b) 查看\windows\system32\drivers\etc 中的services 文件。它应该包含一个类似“gds_db 3050/tcp # InterBase Server”的条目来命名服务器实例。
  • 顺便说一句,您可以尝试查看是否可以使用 IBX 组件获得连接。我可以通过将 IBConnection 的数据库名称设置为“LocalHost:D:\Delphi\Interbase\Databases\MA.GDB”来连接到本地 IB XE7 服务器
  • .GDB 是一个以 winXP 开头的错误文件扩展名
  • @Arioch'The:也许,但在 Win10 中对我来说很好。
  • 等待第一次操作系统崩溃 - 然后它将用存档的文件覆盖您的数据库文件。

标签: delphi database-connection interbase delphi-10.1-berlin


【解决方案1】:

我记得让 Delphi XE8 + Seattle 与 IB XE7 一起工作是相当不错的表现, 特别是我在尝试连接时不断收到“不可用的数据库”错误 IDE内部。注意:以下是我发现让 Delphi 使用完整 IB XE7 包的本地实例所必需的东西。开发者版和桌面版的要求很可能不同,希望在他们的文档中解释。

需要检查的一些事项是:

  1. 签入服务器正在运行的 Windows 服务应用。

    我的服务器显示为

    Interbase XE7 服务器 gds_db

如您所见,服务应用程序应该告诉您服务器的名称。

  1. 如果您想通过 TPC/IP 连接到它,请检查您是否有一个条目 在你的 \windows\system32\drivers\etc\service 文件中像这样

    gds_db 3050/tcp #InterBase 服务器

    Hash-sign developer_ibxe7 3054/tcp # InterBase 服务器

包含 developer_ibxe7 的行应该以 # 开头,但由于某种原因,SO 不会显示它。无论如何,该行已被注释掉,因为它指的是我在某个时候安装的开发者版本。

  1. 检查您的操作系统环境是否包含类似这样的条目

    INTERBASE=d:\ibxe7

如果不是,添加它并重新启动机器。

在我的例子中,d:\ibxe7 是我安装了 IB XE7 的顶级文件夹。

设置/检查这些东西后,在 IDE 中启动一个新的 Delphi 项目,向它添加一个 IBConnection,并将其 DatabaseName 设置为本地 IB 数据库。对我来说,指定

LocalHost:D:\Delphi\Interbase\Databases\MA.GDB

工作正常。然后,查看是否可以将 Connected 属性设置为 True。如果你不能, 发表评论,我会看看我还能记得什么。

【讨论】:

  • embarcadero.com/ru/products/interbase/product-editions 明确声称桌面版没有独立的“TCP 监听服务器”
  • @JamesFergus:很高兴你让它工作了,但你的设置中的哪些变化产生了影响?
  • 在确认它已在服务文件中列出并使用 # 注释掉开发人员版本之后,我尝试打开/激活连接,但它失败了。然后我重新启动操作系统,以防文件被读入内存。在这个阶段,FireDac 连接组件将服务器字段设置为 gds_db,连接失败。然后我清除了服务器字段,连接可以成功切换到活动状态。
  • 在确认它已在服务文件中列出并使用 # 注释掉开发人员版本之后,我尝试打开/激活连接,但它失败了。然后我重新启动操作系统,以防文件被读入内存。在这个阶段,FireDac 连接组件将服务器字段设置为 gds_db,连接失败。然后我清除了
  • @JamesFergus:那么,连接成功后服务器字段设置为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多