[FireDAC] [Phys] [FB]文件不是有效的数据库

时间:2015-06-05 08:20:36

标签: delphi firebird delphi-xe7 firedac

通过FireDAC.FB-Driver访问GDB-DataBase时遇到问题。 这里奇怪的是,如果我在设计时设置连接,一切都可以正常使用

DriverID = FB

Server = 127.0.0.1

Protocol = TCPIP

如果我在运行时尝试相同的连接参数,但它会给我一个[FireDAC][Phys][FB] file is not a valid database - 错误。

单位FireDAC.Phys.FB FireDAC.Phys.FBDef都包含在内。我甚至尝试将所有可能的dll-Files设置为VendorLib,但它并没有改变任何内容。

我知道* .GDB通常是一个InterBase-DataBase,但我运行的是FireBird-Server,据我所知,通过FB-Driver访问应该可行,因为它在设计时指定连接时会这样做。

Firebird-Server-Version是2.5.3.26778 32位

DelphiVersion是XE7

其他编辑: DataBase-File的ODS为11.2(Firebird 2.5 / InterBase 7.5)

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:3)

虽然InterBase和Firebird有着共同的传统并且分享了很多术语,但它们并不相同。自Firebird 1.5以来,ODS版本已经发生了分歧。尽管Firebird 1.5和InterBase 6.1都有ODS 10.1,但这些ODS版本不同且不兼容,对于Firebird 2.5和InterBase 7.5(两者都有ODS版本11.2)更​​是如此。

因此,如果您尝试使用Firebird 2.5打开InterBase 7.5数据库它将无法正常工作,Firebird将报告数据库无效(反之亦然,如果您尝试使用,InterBase将报告类似的错误打开Firebird数据库)。

在技术层面上,这是通过屏蔽ODS版本在Firebird中实现的,因此它们与InterBase的版本不同:

  

Hds_ods_version :两个字节,无符号。页面上的字节0x12和0x13。数据库的ODS主要版本。这个单词的格式是ODS主要版本,与Firebird标志为0x8000进行AND运算。在下面的示例中,ODS版本11的值为0x800b。次要ODS版本保留在标题页的其他位置 - 请参阅下面的hdr_ods_minor

来自:Inside a Firebird Database → Database Header Page - Type 0x01