SQLite:如何使用PRAGMA application_id?

4

虽然

PRAGMA application_id = <integer>;

这段文字的意思是“不会失败”,但实际上它似乎没有起到任何作用。

PRAGMA application_id;

始终返回一个空集合。

我已经尝试过使用Python(sqlite3和APSW)以及命令行sqlite3(1)

注意:我运行的是debian的3.7.13版本的sqlite

3个回答

4
应用程序ID是在SQLite 3.7.17中引入的。

1
请注意,整数必须在有符号32位值的范围内(即在-232到+232-1的范围内,即-2147483648到+2147483647)。如果提供的整数超出范围,则语句将被接受而不会出错,但应用程序ID将设置为零。

谢谢。这解决了我的问题。文档说“32位无符号大端”(我强调的),但对于2^31到2^32-1之间的值,似乎需要先减去2^32,否则ID将被设置为零。你是怎么确定这个的?你知道为什么吗? - wchargin
@wchargin 我是通过试验和猜测来确定的。我不知道为什么会这样。既然文档上说是“unsigned”,那确实很令人困惑。 - Craig McQueen
我向邮件列表报告了这个问题:文档有误,并已在 https://www.sqlite.org/docsrc/info/3580ba4b5bd75ec6 中进行了修正。现在文档中写着“32位有符号大端序”。 - wchargin

-1
PRAGMA 应用程序 ID; PRAGMA 应用程序 ID = 整数; PRAGMA 应用程序 ID 用于查询或设置位于数据库头偏移量 68 处的 32 位无符号大端“应用程序 ID”整数。使用 SQLite 作为应用程序文件格式的应用程序应将应用程序 ID 整数设置为唯一的整数,以便诸如 file(1) 的实用程序可以确定特定的文件类型,而不仅报告“SQLite3 数据库”。分配的应用程序 ID 列表可以通过查阅 SQLite 源代码库中的 magic.txt 文件来查看。

http://www.sqlite.org/pragma.html#pragma_application_id


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