mysql - Sequelize 不会在填充表上创建外键列

标签 mysql node.js sequelize.js

这是我流行的示例数据库:
https://www.mysqltutorial.org/mysql-sample-database.aspx/
我需要在支付表中创建一个 customer_id 外键,使用 squelize :

  payments.belongsTo(customers, {
        foreignKey: 'customer_id',
    });
不幸的是,foreignKey 列不是由 sequelize 自动创建的,但是如果我使用这个命令,它应该:
sequelize.sync({ force: true })
该列已创建,但我的完整数据库内容已清除!
  • 保留我的实际数据的解决方案是什么?
  • 我是否必须手动创建每个外部列?
  • 如果是,确切的语法是什么?

  • 非常感谢 !
    P.S:表格中填充了示例数据。我不想清除这些数据。
    P.S:我使用 https://github.com/sequelize/sequelize-auto 从现有数据库生成数据模型。

    最佳答案

    在您的模型付款中添加 foreignKey 和其他列,如下所示,您可以在您提供的存储库链接的 git readme 中看到此示例
    示例 = https://github.com/sequelize/sequelize-auto#typescript

    payments.belongsTo(customers, {
      foreignKey: 'customer_id',
      targetKey: 'id'
    });
    
    customer_id: {
      type: DataTypes.INTEGER(),
        allowNull: false,
          references: {
        model: 'customers',
          key: 'id'
      }
    }
    

    关于mysql - Sequelize 不会在填充表上创建外键列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64769885/

    相关文章:

    sql - 如何在搜索中避免 & 和 %

    php - 如何使用 php 脚本更新两个不相关的 mysql 表?

    node.js - 如何处理富域模型的持久性

    javascript - 坚持使用 Javascript array , node

    javascript - 如何将单个 SQL OR 运算符应用于 Sequelize 中的表及其关联表?

    mysql - Sequelize (mysql) 中的小写列值 - Node JS

    mysql - 为什么我的 JOIN 显示双重结果?

    mysql - 在 Laravel 中使用关系创建模型

    node.js - UseState() 函数中出现错误 - 预期;

    javascript - Uploadify onUploadSuccess 未返回我的数据