sqlite - 无法使用节点 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
所以可能是代码问题。有任何想法吗?
解决方案
我正在为 sqlite 提供数据库文件的非完全限定路径。由于 sqlite 动态生成数据库,它会在任何地方创建一个数据库,然后尽职尽责地注意到该表不存在。我做了这个公认的常见习语来解决它:
const path = require("path");
const db_name = path.join(__dirname, "data", "apptest.db");
等等
推荐阅读
- sql-server - 如何使用递归 CTE 为数据集添加分辨率
- python - Pytest 抛出 typerror:缺少位置参数
- javascript - 使用 Tampermonkey 取消链接 tel: 链接
- excel - 从 Excel 关闭 PowerPoint 中的显示警报
- javascript - 使用复选框过滤多个类
- php - Laravel / Stripe API - 未定义的方法源()
- azure - 使用 Terraform 将 Azure 可用性集添加到负载均衡器(后端池)
- javascript - Boostrap datepicker 多日期选择器不断返回“请输入有效日期”。
- r - 在 r 中,我如何遍历子集以找到每个子集中列的最大值和日期并构建新对象
- ssh - Windows 机器中的 TFS SSH 任务失败