通过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)
任何想法我做错了什么?
答案 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