orm - android.database.sqlite.SQLiteDiskIOException: disk I/O error ONLY At first run -
app runs , creates database , tables correctly when try save models, exception. when app crashes , when relunch app
, error doesn't happen anymore
! , saves , loads models well
!
initialize activeandroid on application
class:
@override public void oncreate() { super.oncreate(); activeandroid.initialize(this);
model class:
@table(name = "history_records") public class historyrecord extends model { public static final string cost = "cost"; public static final string remote_id = "remoteid"; public static final string owner_id = "ownerid"; public static final string duration = "duration"; public static final string date = "date"; public static final string to_number = "to_number"; public static final string from_number = "from_number"; public static final string session = "session"; // stores record's position in tab @column(index = true) public string tab; @column(name = cost) @expose @serializedname("cost") public float cost; @column(name = remote_id, index = true) @expose @serializedname("id") public string remoteid; @column(name = owner_id) @expose @serializedname("owner_id") public string ownerid; @column(name = session) @expose @serializedname("session") public string session; @column(name = from_number) @expose @serializedname("from") public string from; @column(name = to_number) @expose @serializedname("to") public string to; @column(name = date) @expose @serializedname("date") public string date; @column(name = duration) @expose @serializedname("duration") public int duration; @expose @serializedname("track") public list<track> tracks; public historyrecord() { super(); tracks = new arraylist<>(); } public list<track> gettracks() { return getmany(track.class, "history_record"); } }
here saving code:
activeandroid.begintransaction(); try { (historyrecord hr : records) { hr.tab = tabnumber; hr.save(); (int = 0, trackssize = hr.tracks.size(); < trackssize; i++) { hr.tracks.get(i).historyrecord = hr; hr.tracks.get(i).data.track = hr.tracks.get(i); hr.tracks.get(i).save(); hr.tracks.get(i).data.save(); } } activeandroid.settransactionsuccessful(); } catch (exception e) { } { activeandroid.endtransaction(); }
stack trace:
06-15 00:14:50.467 18409-18409/ e/sqlitedatabase﹕ error inserting from_number=+266696687 duration=5 session=f16a90e3-3ba7-4941-878b-22cb103a54b3 ownerid=ca0c96715b843fa0b35b57118a00191c to_number=16699990089 tab=all remoteid=b3db24018f977af5a1e63badc301ec2c id=null date=2015-03-16 09:34:21 cost=0.15 android.database.sqlite.sqlitediskioexception: disk i/o error (code 1802) @ android.database.sqlite.sqliteconnection.nativeexecuteforlastinsertedrowid(native method) @ android.database.sqlite.sqliteconnection.executeforlastinsertedrowid(sqliteconnection.java:782) @ android.database.sqlite.sqlitesession.executeforlastinsertedrowid(sqlitesession.java:788) @ android.database.sqlite.sqlitestatement.executeinsert(sqlitestatement.java:86) @ android.database.sqlite.sqlitedatabase.insertwithonconflict(sqlitedatabase.java:1469) @ android.database.sqlite.sqlitedatabase.insert(sqlitedatabase.java:1339) @ com.activeandroid.model.save(model.java:155) @ .model.historyrecordprovider$1.run(historyrecordprovider.java:65) @ .model.historyrecordprovider.savehistoryrecord(historyrecordprovider.java:73) @ .model.historyrecordprovider.insert(historyrecordprovider.java:148) @ .view.fragment.calllogfragmentall$2.success(calllogfragmentall.java:114) @ .view.fragment.calllogfragmentall$2.success(calllogfragmentall.java:107) @ retrofit.callbackrunnable$1.run(callbackrunnable.java:45) @ android.os.handler.handlecallback(handler.java:733) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method)
Comments
Post a Comment