【问题标题】:Is there a way to share In-memory db between processes?有没有办法在进程之间共享内存数据库?
【发布时间】:2017-05-06 10:29:10
【问题描述】:

我在 linux 上的 c++ 客户端使用 sqlite3,我打算用 node.js 打开同一个数据库。
也就是说,我的意思是我想在其他进程之间使用相同的数据库文件,而不是线程。

在我的 Windows 上,我在两个 cmd shell 上运行 sqlite3.exe。

在第一个 cmd shell 中,

sqlite3.exe
sqlite> ATTACH DATABASE 'file:memdb1?mode=memory&cache=shared' AS aux1;
sqlite> 创建表项(名称 varchar(20) );
sqlite> 插入项目(名称)值('item1');

在第二个 cmd 外壳中,

sqlite3.exe
sqlite> ATTACH DATABASE 'file:memdb1?mode=memory&cache=shared' AS aux1;
sqlite> 从项目中选择 *;
错误:没有这样的表:项目

任何建议或意见将不胜感激。

【问题讨论】:

  • 作为旁注,我在 windows 上使用 sqlite 3.8.7.1 进行了测试。

标签: sqlite


【解决方案1】:

documentation 这么说

共享内存数据库的所有数据库连接都需要在同一个进程中。

您需要使用一个文件,或者编写您自己的共享内存VFS 并重新编译您的程序和 node.js 以使用它。

【讨论】:

  • 非常感谢您对 VFS 的建议。
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2019-11-25
  • 2016-11-03
  • 2022-11-13
  • 1970-01-01
相关资源
最近更新 更多