0

我的问题:

如何将我的软件的当前版本存储在 PostgreSQL 生成的转储文件中?


我的问题的原因:

我使用 PostgreSQL 数据库开发了一个 JAVA 软件。该软件安装在每个用户的本地计算机上,数据库也是本地的,并且对每个用户来说都是个人的。

我创建了一个功能,以便用户可以备份他们的数据库并恢复它们。为此,我的 JAVA 代码运行pg_dump以生成备份文件并pg_restore恢复它。也就是说,备份只不过是下面命令生成的数据库的转储:

pg_dump.exe -U myuser -h localhost -p 5432 -Fc -f bkpname.bkp mydb

问题是我通常会启动软件更新。该软件的新版本始终与以前版本的转储兼容。但是,旧版本的软件与新版本生成的转储不兼容。

有时会发生用户试图在不兼容的旧版本软件中恢复最新版本的转储。

我希望转储文件具有生成它的软件版本的信息。这样,我可以简单地显示一条消息,通知用户他需要下载最新版本的软件才能恢复备份。


我想到了下面的两种形式,但我认为它们不合适:

  1. 以转储文件名保存软件版本。这会很糟糕,因为用户可以重命名文件。
  2. 连接转储文件内容中的版本。我担心转储文件可能会在其中输入文本的过程中或在删除它的文本的过程中(在恢复转储之前)以某种方式损坏。

有没有更好的方法将此信息添加到转储文件中?

4

1 回答 1

1

一种想法是将信息存储在数据库内的特殊表中。

该表未正常使用,您在执行转储之前将正确的版本写入其中。

在恢复整个转储之前,首先只恢复该表:

pg_restore --table dump_version -d mydatabase dumpfile.dmp

然后您检查表中的内容并相应地进行。

于 2017-06-13T08:30:35.160 回答