Sqlite 外键误匹配引用
我需要你的帮助, 我正在使用moor作为数据库创建一个带有Flatter的待办应用程序,我在数据库中创建了三个表,但只有两个表与我的问题有关,它们是任务和项目 发生异常。 SqliteException(SqliteException:外键不匹配-“任务”引用“项目”,SQL逻辑错误) 这是我的项目表Sqlite 外键误匹配引用,sqlite,flutter,flutter-moor,Sqlite,Flutter,Flutter Moor,我需要你的帮助, 我正在使用moor作为数据库创建一个带有Flatter的待办应用程序,我在数据库中创建了三个表,但只有两个表与我的问题有关,它们是任务和项目 发生异常。 SqliteException(SqliteException:外键不匹配-“任务”引用“项目”,SQL逻辑错误) 这是我的项目表 class Projects extends Table { IntColumn get id => integer().autoIncrement()(); IntCo
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};
}
类项目扩展表{
IntColumn get id=>integer().autoIncrement();
IntColumn get tasksNumber=>integer();
text column get projectName=>text().withLength(最小值:2,最大值:32)();
TextColumn get description=>text();
DateTimeColumn获取dateAndTime=>dateTime();
BoolColumn get isCompleted=>boolean();
@凌驾
设置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};
}
类任务扩展表{
IntColumn get id=>integer().autoIncrement();
TextColumn get project=>text().customConstraint('REFERENCES projects(projectName)')();
TextColumn get taskName=>text();
DateTimeColumn获取dateAndTime=>dateTime();
BoolColumn get isDone=>boolean().withDefault(常量(false))();
@凌驾
设置get primaryKey=>{id,taskName,project};
}
感谢您的帮助我不确定,但原因似乎是子表fk引用了父表中的非pk列 在您的情况下,如果将
'REFERENCES projects(projectName)
更改为'REFERENCES projects(id)
,则错误将消失。或使projectName
成为主键