मैंने अपने आईफोन एप्लिकेशन के लिए अपने SQLite प्रश्नों के साथ एक अजीब व्यवहार को देखना शुरू कर दिया। जब भी मैं एक "INSERT" कथन निष्पादित करता हूं, मेरी डीबी फ़ाइल के बगल में एक जर्नल फ़ाइल बनाई जाती है (सटीक फ़ाइल नाम "userdata.db-jour" है)।SQLite में जर्नल फ़ाइल बनाने का क्या कारण बनता है?
यदि मैं दस्तावेज़ों को सही ढंग से समझता हूं, तो यह जर्नल फ़ाइल SQLite द्वारा ऑपरेशन विफल होने के मामले में रोलबैक करने में सक्षम होने के लिए उपयोग की जाती है। लेकिन ऑपरेशन पूरा होने के बाद फ़ाइल वहां रहती है।
sqlite3 *db = NULL;
sqlite3_open("userdata.db", &db);
sqlite3_stmt *insertStmt = NULL;
const char *query = "INSERT INTO table VALUES(?,?)";
sqlite3_prepare_v2(db, query, -1, &insertStmt, NULL);
sqlite3_bind_int(insertStmt, 1, 0);
sqlite3_bind_int(insertStmt, 2, 0);
sqlite3_step(insertStmt);
sqlite3_reset(insertStmt);
sqlite3_clear_bindings(insertStmt);
sqlite3_close(db);
के बाद 'sqlite3_step' समारोह कहा जाता है और है जर्नल फ़ाइल बनाई गई है वहाँ रहता है:
मैं तैयारी बंधन और क्रियान्वित क्वेरी (सादगी के लिए बदले मूल्यों के लिए कोई भी चेक) के लिए क्लासिक चरण जब तक मैं डीबी बंद नहीं करता। इसे दूर करने के लिए मुझे क्या करने की ज़रूरत है?