Flutter sqflite错误SqfliteDatabaseException

时间:2019-10-28 21:26:29

标签: flutter dart sqflite

我有一个带有sqflite数据库的flutter应用程序,当我保存新记录时,它保存正常,但是当我更改并保存它时,它会中断并显示此错误:

enter image description here

await db.execute("
      CREATE TABLE $registroTable(
      $idColumn INTEGER PRIMARY KEY AUTOINCREMENT,
      $viagemColumn INTEGER,
      $categoriaColumn INTEGER,
      $dateColumn DATE,
      $tituloColumn TEXT,
      $valorColumn FLOAT,
      FOREIGN KEY ($viagemColumn) REFERENCES $viagemTable($idColumn),
      FOREIGN KEY ($categoriaColumn) REFERENCES $categoriaTable($idColumn)
      );");
    });

发生异常:

SqfliteDatabaseException (DatabaseException(Error Domain=FMDatabase
Code=19 "UNIQUE constraint failed: registroTable.idColumn"
UserInfo={NSLocalizedDescription=UNIQUE constraint failed:
registroTable.idColumn}) sql 'INSERT INTO registroTable (viagemColumn,
categoriaColumn, dateColumn, tituloColumn, valorColumn, idColumn)
VALUES (?, ?, ?, ?, ?, ?)' args [1, 1, 2019-10-27, milho, 15000.0,
1]})

1 个答案:

答案 0 :(得分:0)

从该错误看来,您正在向表中插入(试图添加新行)。我相信已经存在具有相同ID的行,因此数据库会阻止您添加具有相同ID的另一行(我认为ID是唯一的)。

当您要更改值时,应该改用sqflite API的“更新”功能。