brarcher / budget-watch

Application for personal budget management
GNU General Public License v3.0
83 stars 44 forks source link

SQLite related exception #210

Open seg-ha opened 4 years ago

seg-ha commented 4 years ago

E/SQLiteDatabase( 9276): Error inserting max=10 _id=0.8 E/SQLiteDatabase( 9276): android.database.sqlite.SQLiteConstraintException: column _id is not unique (code 19) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) E/SQLiteDatabase( 9276): at protect.budgetwatch.DBHelper.insertBudget(DBHelper.java:142) E/SQLiteDatabase( 9276): at protect.budgetwatch.CsvDatabaseImporter.importBudget(CsvDatabaseImporter.java:233) E/SQLiteDatabase( 9276): at protect.budgetwatch.CsvDatabaseImporter.importData(CsvDatabaseImporter.java:44) E/SQLiteDatabase( 9276): at protect.budgetwatch.MultiFormatImporter.importData(MultiFormatImporter.java:45) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.performImport(ImportExportTask.java:71) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.doInBackground(ImportExportTask.java:125) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.doInBackground(ImportExportTask.java:14) E/SQLiteDatabase( 9276): at android.os.AsyncTask$2.call(AsyncTask.java:288) E/SQLiteDatabase( 9276): at java.util.concurrent.FutureTask.run(FutureTask.java:237) E/SQLiteDatabase( 9276): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) E/SQLiteDatabase( 9276): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) E/SQLiteDatabase( 9276): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) E/SQLiteDatabase( 9276): at java.lang.Thread.run(Thread.java:841) action: 2268@click className=android.widget.Button,instance=0 :android.widget.Button@default action: 2258@click className=android.widget.Button,instance=3 :android.widget.Button@default E/SQLiteDatabase( 9276): Error inserting max=10 _id=0.8 E/SQLiteDatabase( 9276): android.database.sqlite.SQLiteConstraintException: column _id is not unique (code 19) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) E/SQLiteDatabase( 9276): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) E/SQLiteDatabase( 9276): at protect.budgetwatch.DBHelper.insertBudget(DBHelper.java:142) E/SQLiteDatabase( 9276): at protect.budgetwatch.CsvDatabaseImporter.importBudget(CsvDatabaseImporter.java:233) E/SQLiteDatabase( 9276): at protect.budgetwatch.CsvDatabaseImporter.importData(CsvDatabaseImporter.java:44) E/SQLiteDatabase( 9276): at protect.budgetwatch.MultiFormatImporter.importData(MultiFormatImporter.java:45) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.performImport(ImportExportTask.java:71) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.doInBackground(ImportExportTask.java:125) E/SQLiteDatabase( 9276): at protect.budgetwatch.ImportExportTask.doInBackground(ImportExportTask.java:14) E/SQLiteDatabase( 9276): at android.os.AsyncTask$2.call(AsyncTask.java:288) E/SQLiteDatabase( 9276): at java.util.concurrent.FutureTask.run(FutureTask.java:237) E/SQLiteDatabase( 9276): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) E/SQLiteDatabase( 9276): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) E/SQLiteDatabase( 9276): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) E/SQLiteDatabase( 9276): at java.lang.Thread.run(Thread.java:841)

brarcher commented 4 years ago

This was during an import, right? If one is importing data over top of existing data the existing data is not overridden, and this message occurs in the logs. That is, this message is only an issue for importing the data into a fresh app install. The importing code does not check if the import is happening in a fresh install, so it logs regardless.