JAVA对数据库中列表进行操作出现PRIMARY KEY must be unique是什么原因

贴出代码求大神解答

String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
db.execSQL("DROP TABLE IF EXISTS minfo");
db.execSQL("CREATE TABLE minfo (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT, SingerName VARCHAR ,WordNum SMALLINT,ver SMALLINT,PyCode SMALLINT,Stroke SMALLINT,SingerName1 VARCHAR,SingerName2 VARCHAR,FileName SMALLINT,Lang VARCHAR,SongTypeID SMALLINT,SingerID1 SMALLINT,SingerID2 SMALLINT,MType SMALLINT,yTrack SMALLINT,bTrack SMALLINT,yVolume SMALLINT,bVolume SMALLINT,NewSong SMALLINT,style SMALLINT,SongNameSpell VARCHAR,SongNameSpell1 VARCHAR,SongNameSpell2 VARCHAR)");
final ContentValues cv1 = new ContentValues();
cv1.put("name", "aaaa");
// cv1.put("WordNum", "6");
cv1.put("ver", 6);
cv1.put("age", "24");
// cv1.put("PyCode", "KD");
cv1.put("Stroke", 4);
cv1.put("SingerName1", "lb");
cv1.put("SingerName2", "ja");
cv1.put("Lang", "0");
cv1.put("FileName", "3");
cv1.put("SongTypeID", 1);
cv1.put("SingerID1", 123);
cv1.put("SingerID2", 321);
cv1.put("MType", 1);
cv1.put("yTrack", 1);
cv1.put("bTrack", 1);
cv1.put("yVolume", 99);
cv1.put("bVolume", 93);
cv1.put("NewSong", 1);
cv1.put("style", 9);
cv1.put("SongNameSpell", "aaa");
cv1.put("SongNameSpell1", "bbb");
cv1.put("SongNameSpell2", "ccc");
db.insert("minfo", null, cv1);

    ContentValues cv2 = new ContentValues();
    cv2.put("ver", 6);
    cv2.put("name", "ooom");
    db.insert("minfo", null, cv2);
    ContentValues cv3 = new ContentValues();
    cv3.put("ver", 40);
    cv3.put("name", "ognm");
    db.insert("minfo", null, cv3);
    ContentValues cv4 = new ContentValues();
    cv4.put("ver", 22);
    cv4.put("name", "fake");
    db.insert("minfo", null, cv4);

这是我创建的数据库插入的数据 然后
new Thread(new Runnable() {

                @Override
                public void run() {
                   // db.delete("minfo", null, null);
                    db.execSQL("INSERT INTO minfo SELECT * FROM info ");
                    //  db.execSQL("CREATE TABLE minfo as SELECT * FROM info ");
                    Cursor c = db.rawQuery("SELECT * FROM  minfo", null);

                    while (c.moveToNext()) {
                        String w = c.getString(c.getColumnIndex("WordNum"));
                        String p = c.getString(c.getColumnIndex("PyCode"));
                        String songname = c.getString(c.getColumnIndex("name"));
                        int id = c.getInt(c.getColumnIndex("id"));
                        int ver = c.getInt(c.getColumnIndex("ver"));
                         Log.i("本地数据库info表中的数 ", "id=" + id + ",name=" + songname + ",ver=" + ver + ",WordNum" + w + ",PyCode=" + p);
                    }
                }
            }).start();

想向minfo表中插入数据 然后报错 android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19)

是什么意思 我的info表的结构是
id=1,name=1111xxx,ver=132
id=5,name=xx,ver=23

请问这是什么原因造成的啊。。要怎样修改呢???

主键不能重复

主键插入了相对的数据了,主键是非空且唯一的,如:
数据库中主键已经有一个值是1,然后你试图再往数据库中插入主键值1,就会出现这样的错误