Sqlite3 驱动程序使用相同的数据库文件在我的服务器上返回正确的架构但数据为空 - 而不是在我的开发环境中

我正在将我的一个宠物项目从 Rust 重写为 Erlang。该项目使用了一个 SQLite 数据库,并且说数据库已经变得非常强大,所以我编写了新的应用程序来使用相同的 SQLite 数据库文件,以便于迁移。

我正在使用 processone/erlang-sqlite3 驱动程序,因为它看起来是最成熟的。

我对该应用程序的初始模型在我的笔记本电脑上运行良好。我可以毫无问题地读取和写入数据库。问题是,当我将我的工作目录和数据库文件复制到我的 VPS 上时,即使在 sqlite3 CLI 客户端中运行相同的查询返回正确的数据,每个“select * from...”都返回一个空数组,并且完全相同的命令流在我的笔记本电脑上运行良好。

我相信由于某种原因,Erlang 进程无法从我服务器上的数据库文件中读取(我有一个“如果不存在则创建表”语句,它可以解释空数据但正确的架构)。但是,filelib:is_file/1 当我给它文件名时返回 true。

编辑:实际上,这可能不是这样 — 当我删除运行 create table if not exists 的代码时,我得到了完全相同的行为:sqlite3:read_all/2 返回列中的预期架构,但不返回行中的任何数据。

考虑到其他一切都一样,我想这可能是权限问题,但两个数据库文件都设置为模式 0644,所以我不确定这会如何影响事情。

这里还有什么我遗漏的吗?任何可能导致 Erlang 进程能够看到文件但不能从中读取文件的服务器配置内容?我在本地设置和 VPS 设置之间可以看到的唯一明显区别是 VPS 没有非 root 用户——sqlite3 或 Erlang 以 root 身份玩得不好吗?

任何想法或帮助将不胜感激!

qe2004 回答:Sqlite3 驱动程序使用相同的数据库文件在我的服务器上返回正确的架构但数据为空 - 而不是在我的开发环境中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1149.html

大家都在问