gpt4 book ai didi

firebird - 使用 SQL 确定 Firebird 版本(版本 < 2.1)

转载 作者:行者123 更新时间:2023-12-01 12:33:15 28 4
gpt4 key购买 nike

我有一个处理不同位置的数据库的应用程序,我想检查这些数据库是否使用 Firebird 2.5 或更高版本打开。我们最近从 Firebird 2.0 迁移到了 2.5,我们有很多数据库可以响应

select rdb$get_context('SYSTEM','ENGINE_VERSION') as "version" from RDB$DATABASE

with 'SQL 错误代码 = -804 函数未知 RDB$GET_CONTEXT。我猜是因为它们是用 Firebird 2.0 构建的 - 重建到 2.5 修复了它。

有没有一种方法可以检测正在使用的 firebird 服务,该服务可以应用于早于 2.1 的数据库?

最佳答案

您的客户端或连接 API 可以告诉您吗?例如,isql's SHOW VERSION或 DBD::Firebird 的 ib_database_info

如果没有,就用困难的方法找出它,探索从最近到最古老的功能。注意 ENGINE_VERSION support was introduced in 2.1 ,所以没有太多要检查的:

SELECT rdb$get_context('SYSTEM','ENGINE_VERSION')... -- ENGINE_VERSION >= 2.1
SELECT * FROM (SELECT ...) fb20; -- derived table -> FB 2.0
SELECT "fb15" FROM rdb$database WITH LOCK; -- LOCK -> FB 1.5
SELECT FIRST ... -- FIRST -> FB 1.0
else abort() -- prehistoric?

关于firebird - 使用 SQL 确定 Firebird 版本(版本 < 2.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611233/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com