Первичная диагностика: SQLite по какой-то причине не может открыть этот файл.
Проверка очевидных причин, почему и в приблизительном порядке я рекомендую проверить:
- Программа работает на той же машине, на которой вы ее тестируете?
- Он работает как вы (или хотя бы тот же пользователь, с которым вы его тестируете)?
- Заполнен ли диск, содержащий
/tmp
? (Вы работаете в Unix, поэтому используйте df /tmp
, чтобы узнать.)
- Имеет ли каталог
/tmp/cer
«нечетные» разрешения? (SQLite должен иметь возможность создавать в нем дополнительные файлы для обработки таких вещей, как журнал фиксации.)
- Код модульного теста все еще использует эту базу данных? (Одновременные открытия возможны с достаточно современным SQLite и в правильной файловой системе - хотя
/tmp
практически всегда находится в правильном виде FS, так что, вероятно, это не так - но это все еще не рекомендуется.)
- Код разработки действительно пытается записать в эту базу данных, или что-то «умное» ловит вас и заставляет пытаться открыть что-то еще? (Я был пойман этим в моем коде в прошлом; не думаю, что это не может случиться с вами ...)
- Используете ли вы ту же версию библиотеки SQLite в модульных тестах и в рабочем коде?
Если вы не на том же компьютере, вполне возможно, что в производственной системе нет каталога /tmp/cer
. Очевидно, чтобы исправить это в первую очередь. Точно так же, если вы находитесь на одной машине, но работаете от имени разных пользователей, у вас, скорее всего, будут проблемы с правами доступа / владельцем. Дисковое пространство - еще одна серьезная проблема, но менее вероятная. Я не думаю, что это последние три, но стоит проверить, решены ли более очевидные проблемы развертывания. Если ничего из вышеперечисленного не возникло, вы столкнулись с экзотической проблемой и должны будете сообщить гораздо больше информации (это может быть даже ошибка в SQLite, но, зная ее разработчиков, я считаю, что это маловероятно).