gpt4 book ai didi

flutter - 是什么导致此Dart Sq3Lite数据库异常错误?

转载 作者:行者123 更新时间:2023-12-03 04:21:41 26 4
gpt4 key购买 nike

预先感谢您的帮助。

在过去的几天里,这个问题使我发疯。我搜索了Google返回的每个网站,但解决方案仍然无济于事。

我试图使用Dart创建Sq3Lite数据库,并在尝试创建使用外键的表时不断出现DatabaseException错误。我也尝试通过'PRAGMA foreign_keys = ON'打开外键,但是没有运气。我还在Android Studio中使用IOS模拟器,并在运行尝试修复的代码之前删除了该应用程序。

这是我的代码:

  final int version = 1;
Database db;

Future<Database> openDb() async {
if (db == null) {
db = await openDatabase(join(await getDatabasesPath(), 'skeema.db'), onCreate: (database, version) {
database.execute('CREATE TABLE Account(id INTEGER PRIMARY KEY, Name TEXT NOT NULL, CurrencyType TEXT NOT NULL, ' + 'Balance REAL NOT NULL, IsPrimary TEXT NULL)');
database.execute('CREATE TABLE BudgetItem(id INTEGER PRIMARY KEY, Name TEXT NOT NULL, Icon TEXT NOT NULL, Budget REAL NOT NULL, ' + 'IsPrimary TEXT NULL)');
database.execute('CREATE TABLE TransactionType(id INTEGER PRIMARY KEY, Type TEXT NOT NULL)');
database.execute('CREATE TABLE Transaction(id INTEGER PRIMARY KEY, Account_id INTEGER NOT NULL, BudgetItem_id INTEGER NOT NULL, ' +
'TransactionType_id INTEGER NOT NULL, Amount REAL NOT NULL, Date TEXT NOT NULL, Party TEXT NOT NULL, Note TEXT NULL, ' +
'FOREIGN KEY(Account_id) REFERENCES Account(id), ' +
'FOREIGN KEY(BudgetItem_id) REFERENCES BudgetItem(id), ' +
'FOREIGN KEY(TransactionType_id) REFERENCES TransactionType(id))');
}, version: version);
}
return db;
}

这是错误:
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(Error Domain=FMDatabase Code=1 "near "Transaction": syntax error" UserInfo={NSLocalizedDescription=near "Transaction": syntax error}) sql 'CREATE TABLE Transaction(id INTEGER PRIMARY KEY, Account_id INTEGER NOT NULL, BudgetItem_id INTEGER NOT NULL, TransactionType_id INTEGER NOT NULL, Amount REAL NOT NULL, Date TEXT NOT NULL, Party TEXT NOT NULL, Note TEXT NULL, FOREIGN KEY(Account_id) REFERENCES Account(id), FOREIGN KEY(BudgetItem_id) REFERENCES BudgetItem(id), FOREIGN KEY(TransactionType_id) REFERENCES TransactionType(id))' args []}
#0 wrapDatabaseException (package:sqflite/src/exception_impl.dart:11:7)
<asynchronous suspension>
#1 SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:27:7)
#2 SqfliteDatabaseMixin.safeInvokeMethod (package:sqflite_common/src/database_mixin.dart:208:15)
#3 SqfliteDatabaseMixin.invokeExecute (package:sqflite_common/src/database_mixin.dart:370<…>

每次成功创建前3个表,但最后一个表引发错误。任何帮助是极大的赞赏。

谢谢。

最佳答案

事务是一个Sq3Lite关键字,因此您不能为此表命名。因此,给它起任何其他名称,它将起作用。

如果您逃避了该名称,可能仍然可以使用该名称,但是简单的解决方案是选择一个不同的名称。

所有关键字的列表:https://www.sqlite.org/lang_keywords.html

关于flutter - 是什么导致此Dart Sq3Lite数据库异常错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62247633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com