在SQLite升级过程中,失败事务后,drop table没有做任何事情。删除SQL不会引发异常。Android SQLite - 升级过程中失败事务后丢失表
我可以让这个工作的唯一方法是删除与交易有关的所有事情,但我希望数据库保持不变,以分析升级过程中出错的原因。
private void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
try {
db.beginTransaction();
// Exception occurs here
db.setTransactionSuccessful();
db.endTransaction();
}catch(Exception e){
db.endTransaction(); // Transaction is unsuccessful and changes rolled back
// Save for analyses
db.execSQL("DROP TABLE ..."); // Drop table does nothing
}
}
我需要它在结束事务后执行,以便从事务的变化回滚。 – Ryan
endtransaction将履行回滚责任。对? –
为什么在最终放弃完整表时回滚更改 – Nitesh