如何查找数据库文件版本?

117

我有几个SQLite数据库文件。我想知道数据库文件的版本(如果数据库是使用sqlite2或sqlite3或任何其他主/子版本创建的),而不是SQLite库或驱动程序或user_version或schema_version。

11个回答

176

您可以在任何SQLite浏览器中编写此命令,该命令将提供SQLite版本

select sqlite_version();

74
这将返回库版本,而不是数据库文件版本。 - laalto
2
@laalto 的评论已被此官方文档确认:https://www.sqlite.org/lang_corefunc.html#sqlite_version - Paolo Fulgoni
实际上,@Paolo链接中的前一个函数是sqlite_source_id(),通过它,您只需查看SQLite发布日期即可获取版本。 - olivier houssin

106

你可以通过Magic Header String获取数据库文件的版本号:

  • sqlite2 ==> 前48个字节
  • sqlite3 ==> 前16个字节

$ head -c 48 file2.db
** This file contains an SQLite 2.1 database **

$ head -c 16 file3.db
SQLite format 3
更简单的方法是使用file命令:
$ file file2.db
file2.db: SQLite 2.x database

$ file file3.db
file3.db: SQLite 3.x database

1
天真的方式是用Notepad ++打开文件(如果文件很大,请不要这样做!) - Paolo Fulgoni
@PaoloFulgoni XVI32也是一个非常适合这些任务的好工具。 - Nils Lindemann

38

获取user_version

执行SQL语句:PRAGMA user_version;

获取schema_version:

执行SQL语句:PRAGMA schema_version;

创建数据库文件(.db)时,可以由用户设置user_version


24

SQLite程序版本3的正确答案是:

sqlite3 --version

8
这是sqlite3程序的版本,而不是由SQLite创建的数据库的版本。 - user264541

4

您可以从头文件中提取信息。这需要您手动打开数据库文件,但我不知道是否有API函数可以获得此信息。


2

您需要打开Python shell,然后按照以下步骤编写:

import sqlite3

sqlite3.sqlite_version

2
这将为您提供Python使用的sqlite3版本。 - John Go-Soco
可能对某些用户来说不正确,但我应该指出,在我的情况下,在Ubuntu 18.04上使用Django,这实际上是唯一有效的方法。在命令行中尝试“sqlite3 --version”会奇怪地声称未安装sqlite3,而在python内部执行此操作告诉我django / python正在使用的版本,这正是我要寻找的。 - rossdavidh

2
import sqlite3

conn = sqlite3.connect('example.db')

cursor = conn.cursor()

cursor.execute('SELECT SQLITE_VERSION()')

data = cursor.fetchone()
print(f"SQLite version: {data[0]}")

感谢您对Stack Overflow社区做出贡献的兴趣。这个问题已经有很多答案了,其中一个答案已经得到社区广泛验证。您确定您的方法之前没有被提到过吗?如果是这样的话,能否解释一下您的方法与众不同的地方,在什么情况下您的方法可能更好,并且/或者为什么您认为之前的答案不够满意。您可以编辑您的回答并提供解释吗? - Jeremy Caney

1

检查手册文件

sqlite3.version 此模块的版本号,以字符串形式表示。这不是SQLite库的版本。

sqlite3.version_info 此模块的版本号,以整数元组的形式表示。这不是SQLite库的版本。

sqlite3.sqlite_version 运行时SQLite库的版本号,以字符串形式表示。

sqlite3.sqlite_version_info 运行时SQLite库的版本号,以整数元组的形式表示。


0
在命令提示符中,如果您键入sqlite3并按回车键,它将自动在最开始给出版本号。 sqlite3

enter image description here


0

我发现这是确定sqlite版本最简单的方法。 运行Python IDLE Shell,然后执行以下操作:

>>> import sqlite3
>>> sqlite3.version
'2.6.0'

在我的情况下,它是2.6.0。 希望这可以帮到你... 马克

2
请注意,要运行Python IDLE Shell,只需在终端中键入“python”,然后您将看到“>>>”。 - thehme
14
这提供的是模块的版本,而非 SQLite 版本。要获取 SQLite 版本,请使用 sqlite3.sqlite_version。 https://docs.python.org/3.5/library/sqlite3.html#module-functions-and-constants - Bertrand Bordage

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