node.js - 续集迁移 - 添加外键约束问题
问题描述
我需要删除列上现有的外键约束并添加一个同名的新约束,该约束引用另一个表的主键。
我收到一个错误ERROR: Constraint type must be specified through options.type
。虽然我在选项对象中提供约束类型作为第三个参数。
以下是供参考的迁移代码。
async up(queryInterface, Sequelize){
const transaction = await queryInterface.sequelize.transaction();
try {
await queryInterface.removeConstraint(
'shipments',
'shipments_status_id_fkey',
{ transaction }
);
await queryInterface.addConstraint(
'shipments',
'status_id',
{
type: 'foreign key',
name: 'shipments_status_id_fkey',
references: {
table: 'statuses',
field: 'id'
},
transaction
}
);
await transaction.commit();
} catch (err) {
await transaction.rollback();
throw err;
}
}
解决方案
此处的文档显示,选项应该是第二个addConstraint
起作用的参数。
https://sequelize.org/master/class/lib/dialects/abstract/query-interface.js~QueryInterface.html#instance-method-addConstraint
await queryInterface.addConstraint(
'shipments',
{
type: 'foreign key',
fields: ['status_id']
name: 'shipments_status_id_fkey',
references: {
table: 'statuses',
field: 'id'
},
transaction
}
);
推荐阅读
- python - 获取预测值的百分比
- c# - 有没有一种可靠的方法可以在不使用 Cancel 的情况下停止线程?
- r - 如何生成对应多列的变量?
- javascript - 修剪标题和摘录组合的总字符值
- java - 在 null 中定义的 bean 'postRepository' 无法注册。具有该名称的 bean 已在 null 中定义
- javascript - 如何在多输入表单中检查文件上传的扩展名?
- python-3.x - 如何在 python 中为多类分类绘制 ROC 曲线?
- reactjs - 将 redux 连接到单个反应组件
- docker - Docker 为本地卷名包含无效字符“${PWD}”
- linux - 使用 linux 将项目文件夹链接到保管箱文件夹