在调用没有文件名fileName的sqlite3 fileName时,如何避免让sqlite3创建一个新的空数据库?

时间:2011-06-20 20:09:24

标签: sqlite tcl

如果我使用

$ 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)

有什么想法吗?

btw,在实际上下文中,tcl脚本连接到数据库并插入数据。该问题显示为“找不到表”错误,我们发现数据库文件为空..

1 个答案:

答案 0 :(得分:3)

我不知道有一个标志让sqlite3这样做。你可以在调用sqlite3之前让你对文件进行tcl脚本检查吗?

这样的事情会起作用吗?

if {[file exists $dbName] == 1} {
    # call sqlite3 in here
    return 0
} else {
    error "database file not found: $dbName"
}