Как избежать создания sqlite3 новой пустой базы данных при вызове sqlite3 fileName, где имя файла fileName отсутствует? - PullRequest
1 голос
/ 21 июня 2011

Если я использую

$ 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 подключается к базе данных и вставляет данные. Проблема возникла как ошибка «таблица не найдена», и мы обнаружили, что файл базы данных был пуст ..

1 Ответ

3 голосов
/ 21 июня 2011

Мне не известен флаг, чтобы sqlite3 делал это.Не могли бы вы сделать так, чтобы ваш tcl-скрипт проверял файл перед вызовом sqlite3?

Хотелось бы что-то вроде этой работы:

if {[file exists $dbName] == 1} {
    # call sqlite3 in here
    return 0
} else {
    error "database file not found: $dbName"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...