获取我的PostgreSQL数据库版本?

6
在SQLite中,我可以查询PRAGMA user_version;并在需要时设置版本。 在PostgreSQL中有类似的东西吗? 我尝试过select version(),但这只会获取PostgreSQL的字面版本,而不是自定义设置版本。
更新:我研究了一下关于数据库的注释。也许这可以是一个解决方案……注释文档

你指的是自定义集合吗? - Juan Carlos Oropeza
我的意思是,如果我创建一个新的 Person 数据库,我可以设置 user_version=1。之后,我会创建一个更新某些内容的迁移,然后将 user_version 设置为 2。 - Andrew Graham-Yooll
1
你可以使用类似Liquibase的工具来管理你的数据库架构。这将跟踪你所应用的所有更改。 - user330315
1个回答

5

您可以设置自定义配置参数。参数名称必须包含一个点,例如:

set my.version to 4;
select current_setting('my.version') as version;

 version 
---------
 4
(1 row)

按这种方式定义的参数仅对当前会话有效。如果您想为所有会话定义该参数的默认值,可以将其添加到配置文件postgresql.conf中(适用于服务器上的所有数据库)。或者,可以在命令中为数据库设置默认值:

set my.version to 4;
alter database my_database set my.version from current;

另请参阅:


如果我想让它在会话之间保持不变呢? - Andrew Graham-Yooll
太棒了!我明天才能测试并标记它是否为答案。但从概念上讲,我不明白为什么它不能工作。有没有考虑过将数据库版本设置为注释不是一个好主意的原因? - Andrew Graham-Yooll
当然可以使用注释来实现这个目的,但是这样做很笨拙,你必须查询系统目录以检索数据库注释。自定义参数是更自然、更简单的解决方案。 - klin
你知道怎么样在设置自定义参数之后删除它吗? - Andrew Graham-Yooll
1
我认为您无法删除在会话中设置的本地自定义参数。对于数据库 - 使用alter database my_database reset my.version;(效果将在下一个会话中可见,而不是当前会话中)。 - klin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接