Почему запрос sql_master ничего не возвращает на некоторых машинах? - PullRequest
0 голосов
/ 02 апреля 2019

Я недавно изменил некоторый код, который я использую 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 });
...