不会创建带有Sequelize的外键

麦片杀手

我将Sequelize用于我的服务器(使用mysql方言);在Sequelize的文档中写道:

var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })

User.hasMany(Task)
Task.belongsTo(User)

自动创建具有约束的外键引用;但是对我来说这不会发生:

var Shop = sequelize.define('Shop', {
    name: Sequelize.STRING,
    address: Sequelize.STRING,
    phone: Sequelize.STRING,
    email: Sequelize.STRING,
    percentage: Sequelize.FLOAT,
    text: Sequelize.TEXT,
    categories: Sequelize.TEXT,
    start: Sequelize.DATE,
    end: Sequelize.DATE
});

var Offer = sequelize.define('Offer', {
    name: Sequelize.STRING,
    deadline: Sequelize.DATE,
    optionDuration: Sequelize.INTEGER
});

Shop.hasMany(Offer);
Offer.belongsTo(Shop);

这将创建两个表商店和要约,它们两个都只有“ id”主键

我也有一些n:m关联,例如:

Group.hasMany(Accesslevel);
Accesslevel.hasMany(Group);

但是在这种情况下,在Sequelize创建的联接表中也没有外键;所以如果我删除前。一个访问级别,则不会删除联接表访问级别组中的相应记录。

有人知道我做错了什么还是错过了什么吗?我需要为关联创建所有外键,并可以指定行为“ onDelete”和“ onUpdate”(级联)

-更新我已经创建了执行同步的路由:

myServer.get('/sync', function (req, res) {
    sequelize.sync({force: true}).success(function() {
        console.log('sync done');
        res.send(200, 'sync done');
    }).error(function(error) {
        console.log('there was a problem');
        res.send(200, 'there was a problem');
    });
});

因此,然后在浏览器中键入127.0.0.1:port/sync以创建db结构。

威廉·德·海斯勒(Willem D'Haeseleer)

创建表之后(在数据库中),是否添加了关系?
您需要.sync({ force: true })修改方案并再次运行程序。如果数据库中尚不存在该表,则Sequelize将仅创建该表及其所有引用。

建立所有关联后,您是否要调用同步?

您在使用InnoDB吗?

奇怪的是,我可以重现这一点,最简单的解决方法是我认为手动定义密钥,这就是我解决的方式,可能是一个错误,否则我不确定。

参见此处:http : //sequelizejs.com/docs/latest/associations#block-3-line-24

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不会创建带有Sequelize的外键

来自分类Dev

Sequelize不会创建外键作为约束

来自分类Dev

带有外键的 Sequelize ORM 中的 MySQL 查询

来自分类Dev

带有外键约束的创建表时出错(级联)

来自分类Dev

如何使用SwampDragon创建带有外键的模型?

来自分类Dev

如何创建带有外键引用的表?

来自分类Dev

Sequelize js:使用外键创建/更新

来自分类Dev

使用外键为带有外键的表创建唯一索引

来自分类Dev

MySQL不会在子表中返回带有NULL外键的行

来自分类Dev

MySQL:创建一个带有外键的表,该表引用由外键组成的主键

来自分类Dev

在 Sequelize 中创建主键和外键关系

来自分类Dev

Sequelize - 创建的外键包括返回空值

来自分类Dev

带有外键的PDO插入失败

来自分类Dev

清除带有外键+ Propel的表

来自分类Dev

带有外键的sql循环

来自分类Dev

带有外键的Django if语句

来自分类Dev

带有 Java 外键的 MongoDb

来自分类Dev

删除带有外键的表

来自分类Dev

Django - 通过带有外键引用的序列化程序创建一个实例

来自分类Dev

创建带有外键的表时如何修复错误 1064?

来自分类Dev

创建没有外键的导航属性

来自分类Dev

带有外键和枚举的JPA复合键

来自分类Dev

Hibernate不会为@ManyToOne创建外键约束

来自分类Dev

Hibernate不会为@ManyToOne创建外键约束

来自分类Dev

Flask-SQLAlchemy 不会创建表和外键

来自分类Dev

Sequelize模型的外键定义

来自分类Dev

带有只有外键的表的实体设计

来自分类Dev

根据带有外键的联接更新列中的数据

来自分类Dev

根据带有外键的联接更新列中的数据