मैं SQLite डेटाबेस और वसंत का उपयोग करने वाले एक एप्लिकेशन को विकसित कर रहा हूं। मैं समस्या है जब एक से अधिक थ्रेड डेटाबेस को संशोधित करने की कोशिश - मैं कोई त्रुटि मिलती है:वसंत + बहु-थ्रेडेड अनुप्रयोग में 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 है tional (मैंने सभी अलगाव स्तरों की कोशिश की है, प्रत्येक मामले में मुझे एक ही त्रुटि मिलती है)।
अन्य डेटाबेस (MySQL) का उपयोग करते समय, वही कोड ठीक काम करता है।
मैं इसे कैसे हल कर सकता हूं (मेरे कोड में 'मैन्युअल' सिंक्रनाइज़ेशन जोड़ने के बिना)?
आप अपने ऐप की कितनी समवर्ती उम्मीद करते हैं? याद रखें कि, डिज़ाइन द्वारा, SQLite को MySQL के लिए fopen() और -not- के प्रतिस्थापन का इरादा नहीं है। यदि आपको आरडीबीएमएस की आवश्यकता है जिसे समवर्ती डेटा एक्सेस के लिए 2PL या MVCC को संभालने के लिए डिज़ाइन किया गया है, तो आप एक और आरडीबीएमएस पर विचार करना चाहेंगे। MySQL, HSQLDB, या डर्बी सभी में वास्तविक क्लाइंट-सर्वर समर्थन है। – scottb