You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron+Node+SQLite报错:no such table: files 问题咨询

解决better-sqlite3提示“no such table”的问题

以下是针对你遇到的问题的排查和解决步骤:

1. 优先排查数据库路径问题

Electron不同进程的工作目录不一致,你用的相对路径./phyle.db大概率指向的不是你用SQLite Studio编辑的那个数据库文件。比如你的数据库初始化代码在src/sqlite/dbFiles.js里,./phyle.db会指向src/sqlite/phyle.db,而非项目根目录下的目标文件。

解决方法:用Node.js的path模块拼接绝对路径,确保指向正确的数据库文件:

const path = require('path');
// 根据你的项目结构调整路径层级,示例假设phyle.db在项目根目录
const dbPath = path.join(__dirname, '../../phyle.db');
const db = require('better-sqlite3')(dbPath, { fileMustExist: true });

可以先打印console.log(dbPath),确认路径和你SQLite Studio打开的文件路径完全一致。

2. 验证当前连接的数据库表结构

执行以下代码,查看当前连接的数据库中实际存在的表:

const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all();
console.log('当前数据库表列表:', tables);

如果输出里没有files,说明你连接的确实不是正确的数据库文件,回到步骤1调整路径。

3. 修正SQL语句的引号和写法

你当前的INSERT语句用双引号包裹字符串,虽然SQLite支持,但更稳妥的方式是用单引号,同时推荐使用参数绑定避免SQL注入和解析问题:

// 推荐写法:参数绑定
const stmt = db.prepare(
    `INSERT INTO files (filename, path, tags_auto, tags_manual, object) VALUES (?, ?, ?, ?, ?)`
);
stmt.run('Name of files', 'Path of files', 'auto', 'manual', 'object item');

4. 排查重复数据库文件

检查项目目录下是否有多个phyle.db文件(比如在src、根目录、node_modules等不同文件夹里),删除无用的冗余文件,确保程序只加载你编辑过的那个。

内容的提问来源于stack exchange,提问作者monsto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:25:13