我使用从https://www.sqlite.org/download.html下载的最新sqlite3.exe v3.25工具创建了一个新的sqlite3数据库。
我想验证创建的sqlite数据库为v3.25,以利用最新功能。
如何使用sqlite3.exe工具验证版本为v3.25?我欢迎这样做的其他方式。
我在这里尝试了投票率最高的答案; How to find SQLITE database file version
但是,答案无济于事。它返回库版本,而不是数据库文件版本。
我正在使用Windows 10。
答案 0 :(得分:4)
根据the official specification of the database format,在数据库文件的开头有一个头,跨越前100个字节。 标头中有一些项目包含版本号:
Offset Size Description
18 1 File format write version. 1 for legacy; 2 for WAL.
19 1 File format read version. 1 for legacy; 2 for WAL.
60 4 The "user version" as read and set by the user_version pragma.
92 4 The version-valid-for number.
96 4 SQLITE_VERSION_NUMBER
根据您的问题,您似乎想获得SQLITE_VERSION_NUMBER
。
实际上,这不是“数据库版本”(也不存在这种情况),而是value for the SQLite library that most recently modified the database file。
要获得该值,您只需阅读the 4-byte big-endian integer at offset 96。 因此,您可以使用python代码here(“ 我欢迎其他方式这样做。)。 我尝试用包含行的python代码创建数据库
import sqlite3
print('sqlite3 sqlite_version: ', sqlite3.sqlite_version)
(... create database ...)
已打印
sqlite3 sqlite_version: 3.31.1
,然后使用链接的代码读取数据库头。 特别是行
sqlite_version_number = unpack('>i', header[96:])[0]
print('SQLITE_VERSION_NUMBER: ' + str(sqlite_version_number))
打印
SQLITE_VERSION_NUMBER: 3031001
确认正确读取了“数据库版本号”(出于上述原因,在引号之间)。
注意:
只要有可用的python,它就可以在Windows和Linux中使用。
您可以找到其他读取标题的方法。关键是要在哪里查找所需的信息。
2.1。 Sqlite。我找不到显示所需信息的命令。
2.2。 Linux。 dd
可以为您完成这项工作。
2.3。电源外壳。 [System.IO.File]
或Get-Content
可能会有所帮助。我没有对此进行进一步的探讨。