我试图在现有数据库上创建一个新的user表,但是sqflite继续显示“没有这样的表异常”的错误,它只执行一个表。我也尝试过更改数据库名,但是没有任何效果。这是我的DBconnector代码:
class DBConnector {
Future<Database> setDatabase() async {
var directory = await getApplicationDocumentsDirectory();
var path = join(directory.path, 'sddssd.db');
var database =
await openDatabase(path, version:1, onCreate: _createDatabase);
return database;
}
Future<void> _createDatabase(Database database, int version) async {
String questionTableName = QuestionModel.KEY_QUESTION_TABLE_NAME;
String userTableName = UserModel.KEY_USER_TABLE_NAME;
String quesTableSql =
"CREATE TABLE IF NOT EXISTS $questionTableName (id INTEGER PRIMARY KEY,question VARCHAR(200),answer VARCHAR(200));";
String userTableSql =
"""CREATE TABLE IF NOT EXISTS $userTableName (uid INTEGER PRIMARY KEY,name TEXT,email TEXT,password TEXT);""";
await database.execute(quesTableSql);
await database.execute(userTableSql);
}
}
Error :
Exception has occurred.
SqfliteDatabaseException (DatabaseException(no such table: User (code 1 SQLITE_ERROR): , while compiling: INSERT INTO User (uid, name, email, password) VALUES (NULL, ?, ?, ?)) sql 'INSERT INTO User (uid, name, email, password) VALUES (NULL, ?, ?, ?)' args [f, e, s]})发布于 2022-06-10 13:38:23
String quesTableSql = """CREATE TABLE IF NOT EXISTS $userTableName
(
uid INTEGER PRIMARY KEY,
name TEXT,
email TEXT,
password TEXT
""");发布于 2022-06-11 13:04:16
我解决了这个问题,问题是,在加载应用程序时,onCreate回调只执行一次,之后除非使用迁移,否则不会更新任何更改。因此,我为创建Table创建了一个单独的函数,并通过创建该类的实例并调用created方法使其工作。
https://stackoverflow.com/questions/72574661
复制相似问题