Flutter sqflite 报错SqfliteDatabaseException

Flutter sqflite error SqfliteDatabaseException

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

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]})

从错误来看,您似乎正在向 table 插入(试图添加新行)。我相信具有相同 id 的行已经存在,因此数据库会阻止您添加具有相同 id 的行(我相信 id 是唯一的)。

当您想要更改值时,您应该改用 sqflite API 中的 "update" 函数。