mysql alter foreign key_mysql - Sequelize-Mysql ForeignKey添加约束失败,并带有ALTER TABLE - 堆栈内存溢出...

我正在尝试使用以下Sequelize模型创建两个表:

const Sequelize = require('sequelize');

module.exports = function (db) {

const Product = db.define('product', {

intProductID: {

type: Sequelize.INTEGER(11),

primaryKey: true,

autoIncrement: true,

allowNull: false

},

strName: {

type: Sequelize.STRING

},

douPrice: {

type: Sequelize.DOUBLE

}

});

return Product;

}

const Sequelize = require('sequelize');

module.exports = function(db){

const User = db.define('user', {

intUserID:{

type: Sequelize.INTEGER,

primaryKey: true,

autoIncrement: true,

allowNull: false

},

strEmail:{

type:Sequelize.STRING

},

strPassword:{

type:Sequelize.STRING

},

strFirstName: {

type: Sequelize.STRING

},

strLastName: {

type: Sequelize.STRING

}

});

return User;

}

添加这两个模型后,我尝试将它们与以下代码关联:

Product.belongsTo(

User,

{

foreignKey: {

name: 'intCreateUserID',

allowNull: false

},

foreignKeyConstraint: true

}

);

第一次发生这种情况,效果很好。 但是过了一段时间,它试图多次添加约束。 我不断收到以下错误:

SequelizeDatabaseError: Can't create table 'shop.#sql-4d23_2563b' (errno: 121)

code: 'ER_CANT_CREATE_TABLE',

errno: 1005,

sqlState: '#HY000',

sql: 'ALTER TABLE `products` ADD CONSTRAINT `products_intUpdateUserID_foreign_idx` FOREIGN KEY (`intUpdateUserID`) REFERENCES `users` (`intUserID`) ON DELETE NO ACTION ON UPDATE CASCADE;'

我试图在mysql控制台上重现该错误,然后复制粘贴查询。 我注意到由于现有外键,它失败了。 它尝试重新添加约束而不先删除它。 这是Sequelize的错误还是我对模型的定义错误?

我正在使用以下代码同步表:

init.db.sync({ alter: true }).then(() => {

proceed();

}, (error) => {

console.log(error);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值