我正在開發一個使用SQLite數據庫和spring的應用程序。我有問題,當多個線程試圖修改數據庫 - 我得到一個錯誤:spring + SQLite在多線程應用程序
「數據庫文件被鎖定」
我配置了一個數據源:
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" lazy-init="true">
<property name="driverClassName" value="org.sqlite.JDBC" />
<property name="url" value="jdbc:sqlite:sample.db" />
<property name="initialSize" value="2" />
<property name="maxActive" value="20" />
<property name="maxIdle" value="5" />
<property name="poolPreparedStatements" value="true" />
</bean>
,並在每個線程我有JdbcDaoSupport的一個單獨的實例執行插入到數據庫:
getJdbcTemplate().update(
"insert into counts values(15)"
);
執行數據庫更新功能是TRANSAC (我嘗試過所有的隔離級別,每種情況下我都會得到相同的錯誤)。
當使用其他數據庫(MySql)時,相同的代碼工作正常。
我該如何解決這個問題(沒有在我的代碼中添加'手動'同步)?
您希望您的應用程序如何併發?回想一下,按照設計,SQLite旨在替代fopen()和-not- for MySQL。如果您需要一個設計用於處理並行數據訪問的2PL或MVCC的RDBMS,那麼您可能希望考慮另一個RDBMS。 MySQL,HSQLDB或Derby都有真正的客戶端 - 服務器支持。 – scottb 2013-08-29 21:09:48