我正在用express和sequelizejs做我的项目。这是我第一次尝试sequellize,我在两个表goods
和goodsImg
之间有一些关联。我正在研究协会和我很难解决这个问题。请帮助。
Goods
型号:
"use strict";
module.exports = function(sequelize, DataTypes) {
var Goods = sequelize.define('Goods', {
id: {
type: DataTypes.BIGINT,
primaryKey:true,
allowNull: false
},
goodsID:{
type:DataTypes.STRING,
allowNull: false
} ,
...
},{
classMethods: {
associate: function(models) {
Goods.hasMany(models.GoodsImg, { onDelete: 'SET NULL', onUpdate: 'CASCADE' });
}
}
});
return Goods;
};
goodsImg
型号:
module.exports = function(sequelize, DataTypes) {
var GoodsImg = sequelize.define('GoodsImg', {
id: {
type: DataTypes.BIGINT,
primaryKey:true,
allowNull: false
},
goodsID:{
type:DataTypes.STRING,
allowNull: false,
references : 'goods',
referencesKey:'id'
} ,
....
},{
classMethods:{
associate: function(models){
GoodsImg.belongsTo(models.Goods,{ foreignKey: 'id', foreignKeyConstraint:true });
}
}
});
return GoodsImg;
};
使用时sync()
它可以在数据库中生成goods
表,而goodImg
则不能。并出现了一个错误:
执行(默认):显示来自
Goods
的索引可能未处理的
SequelizeDatabaseError:错误:ER_CANNOT_ADD_FOREIGN:无法添加
外键约束 ....
答案 0 :(得分:3)
我建议你跑步:
SHOW ENGINE INNODB STATUS\G
然后查看部分(这是一个例子):
------------------------
LATEST FOREIGN KEY ERROR
------------------------
...
You have defined a SET NULL condition though some of the
columns are defined as NOT NULL.