我正在使用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:无法添加
外键约束
....
最佳答案
可能我建议您运行:
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.