【问题标题】:Foreign key misatch referencing外键不匹配引用
【发布时间】:2020-03-20 08:04:16
【问题描述】:

我需要你的帮助, 我正在使用 moor 作为数据库创建一个带有颤振的待办事项应用程序,我在我的数据库中创建了三个表,但只有两个表关心我的问题,它们是 tasksprojects。然后当我尝试插入一个新任务时,我收到了这个错误

发生了异常。 SqliteException(SqliteException:外键不匹配-“任务”引用“项目”,SQL逻辑错误)

这是我的项目表

class Projects extends Table {
     IntColumn get id => integer().autoIncrement()();
     IntColumn get tasksNumber => integer()();
     TextColumn get projectName => text().withLength(min: 2, max: 32)();
     TextColumn get description => text().withLength(min: 2, max: 35)();
     DateTimeColumn get dateAndTime =>dateTime().withDefault(Constant(DateTime.now()))();
     BoolColumn get isCompleted => boolean().withDefault(Constant(false))();
     @override
     Set<Column> get primaryKey => {id, projectName};
}

任务一是

class Tasks extends Table {
     IntColumn get id => integer().autoIncrement()();
     TextColumn get project =>text().customConstraint('REFERENCES projects(projectName)')();
     TextColumn get taskName => text().withLength(min: 2, max: 32)();
     DateTimeColumn get dateAndTime =>dateTime().withDefault(Constant(DateTime.now()))();
     BoolColumn get isDone => boolean().withDefault(Constant(false))();
     @override
     Set<Column> get primaryKey => {id, taskName, project};
}

感谢您的帮助

【问题讨论】:

    标签: sqlite flutter flutter-moor


    【解决方案1】:

    我不确定,但似乎原因是子表 fk 引用了父表中的非 pk 列。

    在您的情况下,如果您将'REFERENCES projects(projectName)' 更改为'REFERENCES projects(id)',错误就会消失。或将projectName PK。

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 2020-08-14
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      相关资源
      最近更新 更多