当我在带有标志SQLITE_OPEN_READWRITE的零字节文件上调用sqlite3_open_v2()时,该函数返回零。然后是“PRAGMA quick_check;”语句返回包含字符串“ok”的行。那么零字节文件被认为是有效的数据库?似乎有点违反直觉?
答案 0 :(得分:0)
我不认为它有效"。如果它的零字节,它什么都没有,除了参考。是的你可以打开它。但如果文件有> = 1个字节,则无效。
因此只要文件是0字节,就可以打开它,一旦开始进行更改,它就会变成一个sqlite文件。
如果您打开非sqlite文件并尝试进行更改,则会显示错误消息:
错误:文件已加密或不是数据库
答案 1 :(得分:0)
创建新的空数据库的(唯一)方法是尝试打开不存在的文件。 零大小的文件被认为是相同的;它只是一个空数据库。
必须在打开的数据库连接中设置一些设置(例如page size),但这会影响数据库文件的结构。 因此,SQLite会延迟实际编写数据库结构,直到实际需要它为止。