Я разрабатываю приложение, которое использует базу данных SQLite и Spring.У меня проблемы, когда несколько потоков пытаются изменить базу данных - я получаю сообщение об ошибке:
'Файл базы данных заблокирован'
У меня настроен один источник данных:
<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)"
);
Функция, которая выполняет обновление базы данных, является транзакционной (я пробовал все уровни изоляциив каждом случае я получаю одну и ту же ошибку).
Тот же код отлично работает при использовании другой базы данных (MySql).
Как я могу решить эту проблему (без добавления «ручной» синхронизации в моем коде)?