gpt4 book ai didi

mysql - 在创建带有迁移的表时设置外键约束 Sequelize

转载 作者:行者123 更新时间:2023-12-03 22:24:51 24 4
gpt4 key购买 nike

我通常在 NodeJS 项目中使用迁移来创建表。我不使用 sync({ force: true }) 。因此,每次我需要更改数据库架构时,我都会进行迁移。这样,我可以保持生产中的精确场景。
我的问题是如何在创建带有迁移的表时添加 外键约束 。问题是我必须按特定顺序创建迁移。因为,假设我正在创建这些表。

1) users - id, name, email, password

2) posts - id, title, content, user_id, category_id

3) categories - id, name
在这里,如果我按此顺序运行迁移,则会出现错误。
ERROR: Cannot add foreign key constraint
这是因为在 categories 表迁移运行时尚未创建 posts 表。
那么,我在这里有什么选择。
  • 以正确的顺序创建迁移,以便它们以相同的顺序运行。
  • 稍后使用不同的迁移添加外键列(仅用于添加列)。
  • 或使用 sync({ force: true }) 这样,在模型中添加列并添加关联时将创建表。
  • 或任何其他解决方案

  • 你能解释一下我应该在这里做什么..
    提前致谢。

    最佳答案

    第一种情况是最可靠且易于维护的,因为在每次迁移后,您的结构和数据都处于一致状态。
    仅当您希望在两个表中插入大量数据时,第二种情况可能比第一种情况更好,这样您就可以节省时间,因为没有外键,记录的插入速度会快得多。
    对于第一种和第二种情况,您可以对所有增量结构更改进行细粒度控制,并能够回滚某些迁移以及部署不同版本的应用程序和数据库。
    第三种情况适用于数据库结构很少更改的小型项目,以及在不考虑迁移的情况下快速部署和运行应用程序和数据库很重要的情况。

    关于mysql - 在创建带有迁移的表时设置外键约束 Sequelize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65239251/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com