Sqlite 关联导致Foring键不匹配错误
我目前正在sequelize.js上进行实验,更具体地说是在关联中。我正在努力实现以下目标。我必须:Sqlite 关联导致Foring键不匹配错误,sqlite,sequelize.js,associations,Sqlite,Sequelize.js,Associations,我目前正在sequelize.js上进行实验,更具体地说是在关联中。我正在努力实现以下目标。我必须: 使用者 位置 我的逻辑如下: 用户可以或不能为其分配位置 如果用户有一个职位,该职位的id将存储在用户表的“assignedPositionId”字段中 如果用户没有位置,则“assignedPositionId”值设置为null 一个职位可以分配给多个用户 我面临的问题是,我可以成功创建一个用户,但我无法创建一个职位!我总是收到错误消息: SQLITE_ERROR: foreign key m
SQLITE_ERROR: foreign key mismatch - "positions" referencing "users"
我知道这很容易——也许已经晚了,但我真的不知道出了什么问题!非常感谢你的帮助 在这些情况下,我在使用hasOne时遇到问题,倾向于使用belongsTo,例如
User.belongsTo(Position, {
foreignKey: "assignedPositionId",
as: "position"
});
也就是说,创建职位时生成的SQL是什么样子的?您可以直接在Sqlite shell中执行此操作吗?这种类型的错误消息有时表明表PKs有问题。@KenOn10,感谢您提供建议。在仔细阅读文档并执行了几项测试之后,我最终采用了以下方法,该方法非常有效:
User.hasMany(Position, {
as: "position",
sourceKey: "assignedPositionId",
foreignKey: "id",
constraints: false
});
Position.belongsTo(User, {
as: "users",
foreignKey: "assignedPositionId",
constraints: false
});
再次感谢您抽出时间。看看我在回答中是如何解决的。非常感谢你的帮助和建议。约束条件:false在我的案例中起了关键作用。
User.hasMany(Position, {
as: "position",
sourceKey: "assignedPositionId",
foreignKey: "id",
constraints: false
});
Position.belongsTo(User, {
as: "users",
foreignKey: "assignedPositionId",
constraints: false
});