如果我使用
$ sqlite3 fileName
sqlite> .s
sqlite>_
并且没有名为FILENAME的文件,则SQLITE3将创建一个新的空数据库。有没有办法避免这种情况?理想情况下,如果找不到文件,我希望它重试几次,然后失败并显示错误消息。大概是这样的:
$ sqlite3 --failIfNoSuchFile --retry 3 fileName
sqlite> No such file, retrying ...
sqlite> No such file, retrying ...
sqlite> No such file, retrying ...
sqlite> Aborting...
Error: No file named fileName
$_
这样的事情有可能发生吗?
我问这个问题的原因是,我们已有的一个现有数据库被压缩,并被这个新的空白数据库取代,只是因为网络问题阻止了sqlite3从一开始就找到该文件,但并没有阻止它创建新的空文件(并压缩旧的文件)!至少,这是我们提出的解释数据库突然空闲的最有可能的理论(即使结构消失了,.s
也不返回任何内容,文件大小为0)
有什么主意吗?
顺便说一句,在实际的上下文中,TCL脚本连接到数据库并插入数据。问题显示为“TABLE NOT FOUND”错误,并且我们发现数据库文件为空。
2条答案
按热度按时间fumotvh31#
我不知道有什么标志可以让Sqlite3来做这件事。在调用sqlite3之前,您可以让您的TCL脚本检查文件吗?
像这样的东西会奏效吗:
oxcyiej72#
在发布原始问题和答案之后,SQLite添加了
mode
URI文件名参数。如果数据库文件尚不存在,则设置mode=rw
会阻止创建该文件: