0

我正在尝试将一些数据插入 sqflite 表,但执行插入查询时出错

await db.execute(
      'CREATE TABLE $catrgoryTable($category_id INTEGER PRIMARY KEY UNIQUE  , $colDeviceTypeId INTEGER, '
                '$room_id INTEGER)');
        print('category created!');

这是错误

SqfliteDatabaseException (DatabaseException(UNIQUE constraint failed: category_Table.category_id (code 1555)) sql 'INSERT INTO category_Table (category_id, device_type_id, room_id) VALUES (?, ?, ?)' args [1, 1, 1]})

谢谢你的帮助:)

4

3 回答 3

5

该表category_Table上有一个唯一约束字段,错误表明您尝试输入一个category_id已经存在的值,这违反了该字段的主键唯一性约束。给定 ID 值只能存在一行。因此,如果您尝试插入一行,请确保您category_id具有唯一值,或者如果您不关心自己生成 id,则可以将AUTOINCREMENT设置添加到category_id列定义中。这样它将自动填充,并且每一行都有自己的唯一值。

于 2019-05-08T18:38:49.117 回答
0
static Future<void> insert(String table, Map<String, dynamic> data) async {
  final db = await DBHelper.database();
  db.insert(table, data, conflictAlgorithm: sql.ConflictAlgorithm.replace);
}

这是我的代码是否认为如果我使用冲突算法替换它会替换那个唯一值?

于 2021-04-12T21:21:38.923 回答
0

在数据库的插入函数中。添加

conflictAlgorithm: ConflictAlgorithm.replace.

它对我有用

于 2022-01-23T16:23:39.917 回答