Я недавно изменил некоторый код, который я использую SQLite через better-sqlite3, чтобы проверить, существует ли таблица перед выполнением определенных запросов на импорт.
Код и тесты работают нормально. Но тесты не проходят на наших сборочных машинах или на других машинах разработчиков. Тесты используют базу данных в памяти, проблема не возникла ни в одной из баз данных, не связанных с памятью, хотя она была запущена только на полдюжине машин. В базе данных есть таблицы, и код может читать / записывать их.
Оказывается, что запрос, который я использовал, чтобы проверить, из каких таблиц я могу импортировать, дал пустой результат. На самом деле, если я просто что-то запрашиваю у sql_master, то получаю пустой результат.
// db is a database from better-sqlite3
private async getAllTables() {
var query = connection.db.prepare(`SELECT name, type FROM sqlite_master`).raw();
return query.all();
}
var allTables = await this.getAllTables();
console.log(`all things in sql_master: ${await allTables.join(", ")}.`);
Консоль имеет следующие зарегистрированные проблемные соответствия:
All things in sql_master: .
Локально печатает список всех вещей в sql_master, как вы и ожидали. Все остальные запросы, которые выполняет мой тестовый код, работают должным образом (чтение и запись в таблицы, кроме sql_master).
База данных была создана как:
db = new Connection(":memory:", { memory: true, fileMustExist: true });