我有一个项目,我应该使用多个表来避免在我的 sqlite 文件中保留重复的数据(即使我知道使用多个表是一场噩梦)。
在我的应用程序中,我正在以某种方法从一个表中读取数据,并以某种其他方法将数据插入到另一个表中。当我这样做时,我从 sqlite step 函数中得到错误代码 21,这是 sqlite 误用。
根据我的研究,那是因为我无法从多线程访问表。
到目前为止,我阅读了 sqlite 网站并了解到配置 sqlite 数据库有 3 种模式:
1)单线程:你没有机会调用多个线程。
2)多线程:是的多线程;但也有一些障碍。
3)序列化:这是与多线程数据库应用程序的最佳匹配。
如果sqlite3_threadsafe() == 2
返回 true 那么是的,您的 sqlite 数据库已序列化,并且返回 true,所以我为自己证明了这一点。
然后我有一个代码来配置我的 sqlite 数据库以进行序列化以保证它。
sqlite3_config(SQLITE_CONFIG_SERIALIZED);
当我在课堂上使用上面的代码时,我从 1 个表中读取和插入数据可以完美地工作:)。但是,如果我尝试在课堂上使用它,我从 2 个表中读取和插入数据(实际上是我真正需要它的地方),就会出现 sqlite 滥用问题。
我检查了我打开和关闭数据库的代码,它们没有问题。他们工作,除非我删除另一个。
我正在使用 ios5,这对我的项目来说确实是一个大问题。我听说instagram 使用postgresql 可能是这个原因哈?你一开始会建议 postgresql 还是 sqlite ?