我们公司在其产品中使用Firebird数据库已经有4到5年的时间了.在此之前,我们一直在使用Interbase数据库。最近出现了新的要求,要求启用unicode字符集(目前我们正在使用字符集'NONE')。在调查了这个问题之后,我发现该解决方案需要升级ODS (磁盘上结构)二进制数据库文件格式的步骤之一。我已经读过,推荐的解决方案是使用gbak实用程序备份数据库,然后恢复数据库。这有一个问题。在original manual to Firebird中,编写了:
备份应该使用旧的ODS版本的InterBase或Firebird提供的gbak实用程序进行。还原应该使用新版本的Firebird中的gbak来执行。
这是个问题,因为我正在开发的产品已经有20年了,我真的不能说我们的客户正在使用什么ODS版本。如果我遵循上面提到的说明,这将意味着我的升级实用程序应该拥有从Interbase 1.0到现在发布的所有可能版本的gbak实用程序。基于检测到的ODS版本(例如,通过调用命令行实用程序"gstat“作为Firebird安装的一部分),我应该调用正确的gbak.exe文件。对我来说这似乎是个过于复杂的解决方案。不能只使用最新的gbak实用程序进行备份和恢复阶段吗?我害怕的是,我在这个过程中犯了什么错误,数据就会丢失。因此,我不能只依赖gbak实用程序进行备份,而是手动备份*.gdb文件。
发布于 2016-02-25 13:58:12
您应该能够使用当前Firebird版本的gbak备份数据库,并使用正在迁移到的Firebird版本的gbak进行还原。如果是同一个版本,那就没问题了。
专门使用创建ODS版本的Firebird或Interbase版本的gbak的指令通常是过分的,因为gbak理解旧的格式。如果您的数据库在当前Firebird版本上运行良好,那么应该可以使用该版本的gbak进行备份。据我所知,该指令的含义是,您应该使用目标Firebird版本的gbak进行还原。
忽略一些边缘情况,一般来说,在升级ODS时,它将达到Firebird 2.5。当您从Firebird 2.5迁移到Firebird 3时,您需要遵循此指示才能正确升级。
此外,在进行正常备份时,请确保使用正确的版本。例如,使用Firebird2.1gbak备份一个ODS 11.2/Firebird 2.5数据库似乎是可行的,但它将使备份在Firebird 2.5上无法恢复,因为老的gbaks不知道他们需要跳过RDB$ADMIN
角色。在“还原到Firebird 2.5”时,这将导致尝试插入重复角色,这将破坏还原。
但是,当您将数据库更改为使用UTF-8时,您可能需要考虑使用正确的字符集重新创建数据库,并将数据(具有适当的字符集转换)从旧数据库泵入新数据库。
https://stackoverflow.com/questions/35621143
复制相似问题