我们有一个 .gbk 文件,我们正在尝试将其恢复到数据库,以便将其转换为 Postgres,但我们无法弄清楚 ODS,或者即使它实际上是 Interbase 文件,而不是 Firebird 文件。
我们运行下载的gbak版本UI-V3.0.10.33601 Firebird 3.0并恢复它。在生成的文件上运行 gstat 可以得到:
Database header page information:
Flags 0
Generation 1814
System Change Number 0
Page size 16384
ODS version 12.2
Oldest transaction 1803
Oldest active 1804
Oldest snapshot 1804
Next transaction 1804
Sequence number 0
Next attachment ID 9
Implementation HW=AMD/Intel/x64 little-endian OS=Darwin CC=gcc
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 1
Creation date Jan 19, 2024 23:35:51
Attributes no reserve
Variable header data:
Sweep interval: 0
*END*
尝试在 Mac 上使用 DBeaver 打开它(作为 Firebird):
I/O error during "open" operation for file “myfilename”; Error while trying to open file; Operation not permitted [SQLState:08001, ISC error code:335544344]
尝试在 PC 上使用 DBeaver 打开它(作为 Firebird):
unsupported on-disk structure for file “myfilename”: found 32780.18, support (null) (null)
我认为这意味着它期望 18,并且我读到 32779,比我们的低 1,表明 i 是 Firebird 2.x 文件。它是 Firebird 文件吗,因为我们使用了 Firebird 提供的 gbak?这是我们唯一可以使用的版本。
尝试使用 Interbase 2020 togo 安装(PC)
gdb 文件上的 gstat:
Wrong ODS version, expected 18, encountered 32780
此外,在我们开始的 gbk 文件上运行 gbak 会给出:
gbak: ERROR: Expected backup version less than or equal to 7. Found 9
所以综上所述,我们根本无法弄清楚到底发生了什么,不清楚该文件是太新还是太旧,甚至不清楚它是 Firebird 还是 Interbase。正确的做法是什么?
根据消息“预期备份版本小于或等于7。发现9”此备份文件是由Firebird gbak 2.5版本制作的。您可以在任何 Firebird 服务器版本 2.5 或更高版本上恢复它。
在MAC上尝试连接数据库时遇到的错误与数据库格式无关,而是与文件系统权限有关(不一定是数据库文件本身,也可能是临时文件的问题)。您可以使用远程连接字符串来解决它们,而不是嵌入和/或调整相关文件的权限。
您在 PC 上尝试连接数据库时遇到的错误意味着您只是从 Mac 复制了文件,这是行不通的,因为数据库文件与平台相关。您可以通过恢复PC上的备份文件来解决。
尝试使用 Interbase 恢复 Firebird 备份时出现的错误是由于 Firebird 和 Interbase 是不同的 SQL 服务器,尽管它们有共同的祖先。你无法解决它。