首页 > 解决方案 > 无法使用节点 14.16.1 运行 sqlite 查询

问题描述

我有一个从 Linux 复制过来的已知良好数据库。我从源代码和预建库安装了 sqlite3:

 npm install --build-from-source sqlite3

我最终得到了 sqlite3@5.0.2。

当我从我的应用程序运行 sql 时,它抱怨它找不到我知道的表:

数据库 {} SQLITE_ERROR:没有这样的表:REVISIONS

在挖掘之后,这似乎是我与源代码一起分发的 sqlite 二进制文件:

node_modules/sqlite3/lib/binding/napi-v3-win32-x64\node_sqlite3.node

当我尝试在 bash for windows 中运行它时,我收到此错误:

$ node_modules/sqlite3/lib/binding/napi-v3-win32-x64/node_sqlite3.node
bash: node_modules/sqlite3/lib/binding/napi-v3-win32-x64/node_sqlite3.node: cannot execute binary file: Exec format error

更新:

我在Debian上试过,我得到了同样的错误,

Database {}
SQLITE_ERROR: no such table: revisions
GET / 200 59.316 ms - 2447

所以可能是代码问题。有任何想法吗?

标签: sqlitenpm

解决方案


我正在为 sqlite 提供数据库文件的非完全限定路径。由于 sqlite 动态生成数据库,它会在任何地方创建一个数据库,然后尽职尽责地注意到该表不存在。我做了这个公认的常见习语来解决它:

const path = require("path");
const db_name = path.join(__dirname, "data", "apptest.db");

等等


推荐阅读