Sequelize 重复键约束违规
Posted
技术标签:
【中文标题】Sequelize 重复键约束违规【英文标题】:Sequelize Duplicate Key Constraint Violation 【发布时间】:2016-12-01 15:05:37 【问题描述】:我正在尝试通过使用 Sequelize 和 Postgresql 显式创建的联结表添加多对多关系。
关系两边的表是这样关联的:
Shop.belongsToMany(models.user, through: 'visits' )
User.belongsToMany(models.shop, through: 'visits' )
访问联结表主键定义如下:
id:
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true // Automatically gets converted to SERIAL for postgres
当我尝试插入访问时,我收到以下错误:
ERROR: duplicate key value violates unique constraint "visits_shopId_userId_key"
DETAIL: Key ("shopId", "userId")=(1, 12) already exists.
在执行 pg_dump 后,我尝试通过在模型中添加 constraint: false 来移除复合键约束,但仍然出现错误。
(我在调试过程中删除了表并重新同步了几次)
【问题讨论】:
【参考方案1】:在对Sequelize issues 进行了深入研究之后,事实证明,移除 N:M 复合键上的约束很容易解决。
through 键可以获取具有unique: false
属性的对象:
Shop.belongsToMany(models.user,
through:
model: 'visits',
unique: false
,
constraints: false
);
【讨论】:
以上是关于Sequelize 重复键约束违规的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:完整性约束违规:1062重复条目'jon@doe.com'键'users_email_unique'
SQLSTATE [23000]:完整性约束违规:1062 键 'tbl_item_item_ID_UNIQUE' 的重复条目 '25'
SQLSTATE [23000]:完整性约束违规:1062 键“users_melli_unique”的重复条目“0430142821”
如何修复完整性约束违规:1062 键“PRIMARY:Laravel Pivot Table”的重复条目“1-1”
Laravel - SQLSTATE [23000]:完整性约束违规:1062 键“posts_user_id_unique”的重复条目“1”