2

我想在我的开发环境中使用 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”的网络请求。

未能找到主机。

在 hosts 文件或域名服务中找不到指定的名称。


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

注意:Database Workbench 5 将 OK 连接到同一 VM 上的数据库。

欢迎任何想法。

谢谢。

詹姆斯·F。

4

1 回答 1

2

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

一些要检查的事情是:

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

    我的服务器显示为

    Interbase XE7 服务器 gds_db

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

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

    gds_db 3050/tcp #InterBase 服务器

    哈希签名 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。如果你不能,发表评论,我会看看我还能记得什么。

于 2016-09-06T19:12:00.540 回答