微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Electron AppImage .mount 点访问 Sqlite3 数据库?

如何解决如何从 Electron AppImage .mount 点访问 Sqlite3 数据库?

  • 操作系统:Linux 5.9.16-1-manjaro
  • Electron 版本:10.1.5
  • Bettersqlite 版本:7.1.2

我目前正在使用 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”,然后使用这个新副本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?