【发布时间】:2010-10-25 09:09:31
【问题描述】:
是否有可能以某种方式在 SQLite 中创建内存数据库,然后通过一些查询将其销毁?
我需要这样做以对我的数据库层进行单元测试。到目前为止,我只通过创建普通的 SQLite db 文件并在所有测试后删除 if 来工作,但是在内存中完成这一切会好得多。
那么是否可以只在内存中实例化数据库而不向磁盘写入任何内容? 我不能只使用事务,因为我想创建全新的数据库。
【问题讨论】:
是否有可能以某种方式在 SQLite 中创建内存数据库,然后通过一些查询将其销毁?
我需要这样做以对我的数据库层进行单元测试。到目前为止,我只通过创建普通的 SQLite db 文件并在所有测试后删除 if 来工作,但是在内存中完成这一切会好得多。
那么是否可以只在内存中实例化数据库而不向磁盘写入任何内容? 我不能只使用事务,因为我想创建全新的数据库。
【问题讨论】:
使用文件名“:memory:”创建它:In-Memory Databases。
一旦与它的连接关闭,它就会不复存在。
【讨论】:
我建议在某处安装一个 tmpfs 文件系统(仅限 RAM 文件系统)并将其用于您的单元测试。
照常实例化 DB 文件,然后使用 rm 将它们删除 - 但没有任何内容进入磁盘。
(编辑:很好——有人打败了我,得到了正确答案;)不管怎样,把它留在这里作为另一个选择)
【讨论】:
作为内存数据库的替代方法,您可以使用空字符串作为文件名来创建SQLite temporary database。当连接关闭时,它将被删除。与内存数据库相比,优势在于您的数据库不受可用内存的限制。
或者,您可以在临时文件中创建数据库并让操作系统清理它。这具有便于检查的优点。
【讨论】: