【发布时间】:2019-10-12 21:42:38
【问题描述】:
未处理的异常:DatabaseException(table UsernameTable has no 名为 rememberMe 的列(Sqlite 代码 1):,编译时:INSERT OR REPLACE INTO UsernameTable (username, rememberMe) VALUES (?, ?), (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)""");
}
【问题讨论】:
-
你在
oldVersion和newVersion(_onUpgrade) 中得到了什么值。我猜onUpgrade中的查询没有被调用。 -
如何调用onUpgrade?span>
-
我添加在
initDB().. -
尝试将
version中的openDatabase()更改为5或更高版本。您的数据库似乎出现了错误的情况。 -
我在我的代码中做了。不是吗?
标签: sqlite flutter dart flutter-dependencies sqflite