SQLiteException: table already exists

I added a table called "MEDIA_TABLE" to my database, and I received the following error code:

05-15 20:56:22.976: E/AndroidRuntime(5968): android.database.sqlite.SQLiteException: table personal_stats already exists (code 1): , while compiling: CREATE TABLE personal_stats (_id INTEGER PRIMARY KEY AUTOINCREMENT, pictures TEXT, videos TEXT); 

My second table works fine.

I tried uninstalling my application and installing it and it won’t work, maybe there is a table limit in DB?

Here is my onCreate code:

 @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DATE + " TEXT, " + COLUMN_EXERCISE + " TEXT, " + COLUMN_WEIGHT + " TEXT, " + COLUMN_REPS + " TEXT, " + COLUMN_SET_TIME + " TEXT, " + COLUMN_WORKOUT_TIME + " TEXT, " + COLUMN_DISTANCE + " TEXT, " + COLUMN_SPEED + " TEXT, " + COLUMN_REST_TIME + " TEXT, " + COLUMN_NUMBER_OF_SETS + " TEXT, " + COLUMN_FIELDS_PARAMETER + " TEXT, " + COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + COLUMN_HERAT_BEAT + " TEXT, " + COLUMN_CALORIES + " TEXT, " + COLUMN_COMMENT + " TEXT);"); db.execSQL("CREATE TABLE " + SECOND_TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_AGE + " TEXT, " + COLUMN_AGE_PW + " TEXT, " + COLUMN_GENDER + " TEXT, " + COLUMN_HEIGHT + " TEXT, " + COLUMN_HEIGHT_PW + " TEXT, " + COLUMN_BODY_WEIGHT + " TEXT, " + COLUMN_BODY_WEIGHT_PW + " TEXT, " + COLUMN_PROFILE_PIC + " TEXT, " + COLUMN_FAT + " TEXT, " + COLUMN_FAT_PW + " TEXT);"); db.execSQL("CREATE TABLE " + MEDIA_TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PICS + " TEXT, " + COLUMN_VIDEO + " TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + SECOND_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MEDIA_TABLE); onCreate(db); } EDIT : @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME); db.execSQL("CREATE TABLE IF NOT EXISTS" + SECOND_TABLE_NAME); db.execSQL("CREATE TABLE IF NOT EXISTS" + MEDIA_TABLE); onCreate(db); } 
+9
java android sqlite android-sqlite
source share
4 answers

You should use CREATE TABLE IF NOT EXISTS instead of CREATE TABLE . Then your code will look like this:

 @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DATE + " TEXT, " + COLUMN_EXERCISE + " TEXT, " + COLUMN_WEIGHT + " TEXT, " + COLUMN_REPS + " TEXT, " + COLUMN_SET_TIME + " TEXT, " + COLUMN_WORKOUT_TIME + " TEXT, " + COLUMN_DISTANCE + " TEXT, " + COLUMN_SPEED + " TEXT, " + COLUMN_REST_TIME + " TEXT, " + COLUMN_NUMBER_OF_SETS + " TEXT, " + COLUMN_FIELDS_PARAMETER + " TEXT, " + COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + COLUMN_HERAT_BEAT + " TEXT, " + COLUMN_CALORIES + " TEXT, " + COLUMN_COMMENT + " TEXT);"); db.execSQL("CREATE TABLE IF NOT EXISTS" + SECOND_TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_AGE + " TEXT, " + COLUMN_AGE_PW + " TEXT, " + COLUMN_GENDER + " TEXT, " + COLUMN_HEIGHT + " TEXT, " + COLUMN_HEIGHT_PW + " TEXT, " + COLUMN_BODY_WEIGHT + " TEXT, " + COLUMN_BODY_WEIGHT_PW + " TEXT, " + COLUMN_PROFILE_PIC + " TEXT, " + COLUMN_FAT + " TEXT, " + COLUMN_FAT_PW + " TEXT);"); db.execSQL("CREATE TABLE IF NOT EXISTS" + MEDIA_TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PICS + " TEXT, " + COLUMN_VIDEO + " TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + SECOND_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MEDIA_TABLE); onCreate(db); } 
+35
source share

use this method

 db.execSQL("create table if not exists table_name(rank int, correct_answer int, optionselect int);"; 
+3
source share

You run the same program again and again, and the same table exists in the database. You need to modify the Create table query. Try "create table if TABLE_NAME doesn't exist"

0
source share

For me, I created several tables and I had the same TABLE_NAME. This caused a conflict.

 // Define Table public static final class groupMembersTable implements BaseColumns { public static final String TABLE_NAME = "group_members_list"; public static final String COLUMN_GROUP_FIREBASE_ID = "group_firebase_id"; public static final String COLUMN_MEMBER_FIREBASE_ID = "from_user_id"; } 
0
source share

All Articles