问题描述
我目前正在使用 Electron 和 Bettersqlite 编写应用程序。
我像这样构建 AppImage:
npm run build && electron-builder build
db = new Database(
path.join(__dirname,`/${dbname}`).replace("/app.asar","")
);
"extraResources": [
"public/build/Database.db"
],
但是当我打开 AppImage 时,我收到以下错误消息:
sqliteError: attempt to write a readonly database
由于 /tmp/.mountxxx 点为只读,数据库似乎无法访问。
当我在 development 文件夹中打开应用程序时不会发生这种情况,因为它不是只读目录。
有没有办法使用/tmp/.mountxxx目录下的数据库?
我如何以另一种方式访问数据库?
提前致谢。
解决方法
我已经搜索了一种使用 AppImage 挂载点进行读写的方法,但我没有找到任何东西。我将使用用户的主目录来存储数据库
,正如错误所说,当 AppImage 被执行时,AppDir 被挂载为 RO 文件系统。
要解决此问题,您需要使用启动脚本将数据库文件复制到用户主目录中。例如,您可以将其复制到“$HOME/.cache/com.myapp/appdata.db”,然后使用这个新副本。