OnUpgrade SQFLITE:未处理的异常:DatabaseException(表UsernameTable没有名为RememberMe的列(SQLite代码1):

时间:2019-05-27 10:09:41

标签: sqlite flutter dart flutter-dependencies sqflite

  

未处理的异常:DatabaseException(表UsernameTable没有   列,名称为RememberMe(SQLite代码1):,而在编译时:INSERT OR   替换为UsernameTable(username,RememberMe)值(?,?),(OS   错误-2:没有此类文件或目录))sql'INSERT OR REPLACE INTO   UsernameTable(username,RememberMe)VALUES(?,?)'args [term @ melfs,   1]}

我升级了数据库。我在UsernameTable表中添加了新列。但这不起作用。我在这个数据库中已经有很多记录。我无法drop,所以我该如何向现有数据库添加新列。我使用了Sqflite

 initDb() async {
    io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "HelperDatabase.db");
    var theDb = await openDatabase(path, version: 4, onCreate: _onCreate, onUpgrade: _onUpgrade);
    return theDb;
  }

OnUpgrade方法。

 void _onUpgrade(Database db, int oldVersion, int newVersion)async{
  if(oldVersion != 5){
      await db.execute("ALTER TABLE UsernameTable ADD COLUMN rememberMe INTEGER DEFAULT 0");
    }
  }

onCreate方法

  void _onCreate(Database db, int version) async {
 await db.execute("""CREATE TABLE UsernameTable(username STRING)""");
}

0 个答案:

没有答案