OnUpgrade SQFLITE: Unhandled Exception: DatabaseException(table UsernameTable has no column named rememberMe (Sqlite code 1):(OnUpgradSQFLITE:未处理的异常:数据库异常(表UsernameTable没有名为RememberMe的列(Sqlite代码1):)
问题描述
未处理的异常:数据库异常(表UsernameTable没有 名为RememberMe(Sqlite代码1):的列,编译时:插入或 替换为UsernameTable(用户名,RememberMe)值(?,?),(OS 错误-2:没有这样的文件或目录))SQL‘INSERT或REPLACE INTO UsernameTable(用户名,RememberMe)值(?,?)‘Args[术语@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)""");
}
推荐答案
您需要确保数据库版本匹配才能访问数据库。验证是否正在调用似乎传递新版本的_onUpgrade()方法。如果您考虑在SQFlite上打开时进行自动版本管理,也可以使用该功能。
这篇关于OnUpgradSQFLITE:未处理的异常:数据库异常(表UsernameTable没有名为RememberMe的列(Sqlite代码1):的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:OnUpgradSQFLITE:未处理的异常:数据库异常(表UsernameTable没有名为RememberMe的列(Sqlite代码1):
基础教程推荐
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
- 在 SQL 中连接多个表 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- 无法解决整理冲突 2021-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
