为什么查询sql_master在某些计算机上不返回任何内容?

时间:2019-04-02 13:12:30

标签: sqlite better-sqlite3

我最近更改了一些代码,这些代码已通过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(", ")}.`);

控制台在有问题的Matchines上记录了以下内容:

All things in sql_master: .

在本地,它会按您期望的那样打印sql_master中所有内容的列表。我的测试代码正在执行的所有其他查询均按预期工作(除了sql_master之外,还读取和写入表)。

数据库的创建方式如下:

db = new Connection(":memory:", { memory: true, fileMustExist: true });

0 个答案:

没有答案