无法打开 gbk 文件 - 是 Firebird 还是 Interbase?

问题描述 投票:0回答:1

我们有一个 .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。正确的做法是什么?

firebird interbase firebird-3.0
1个回答
0
投票

根据消息“预期备份版本小于或等于7。发现9”此备份文件是由Firebird gbak 2.5版本制作的。您可以在任何 Firebird 服务器版本 2.5 或更高版本上恢复它。

在MAC上尝试连接数据库时遇到的错误与数据库格式无关,而是与文件系统权限有关(不一定是数据库文件本身,也可能是临时文件的问题)。您可以使用远程连接字符串来解决它们,而不是嵌入和/或调整相关文件的权限。

您在 PC 上尝试连接数据库时遇到的错误意味着您只是从 Mac 复制了文件,这是行不通的,因为数据库文件与平台相关。您可以通过恢复PC上的备份文件来解决。

尝试使用 Interbase 恢复 Firebird 备份时出现的错误是由于 Firebird 和 Interbase 是不同的 SQL 服务器,尽管它们有共同的祖先。你无法解决它。

© www.soinside.com 2019 - 2024. All rights reserved.