0

我最近通过 better-sqlite3 更改了一些使用 SQLite 的代码,以在运行某些导入查询之前检查表是否存在。

代码和测试都运行良好。但是测试不会在我们的构建机器或另一台开发机器上通过。测试使用的是内存数据库,虽然它只在六台机器上运行过,但在任何非内存数据库上都没有出现问题。数据库中有表,代码能够读取/写入它们。

事实证明,我用来检查可以从中导入哪些表的查询返回了一个空结果。事实上,如果我在这些情况下只从 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 });
4

0 回答 0