【问题标题】:Sequelize table name updatesSequelize 表名更新
【发布时间】:2021-09-30 07:23:53
【问题描述】:

我在 Postgres 中有一个表,对于 ORM,我正在使用 sequelize 我需要更新表名,因此我尝试了以下迁移

queryInterface.renameTable('table1', 'table2', { transaction }

但由于某种原因,它正在使用与表 1 相同的数据创建一个新表,其中表 2 具有与表 1 相同的数据,但表 1 仍以空白数据退出。此函数的行为是否正确,因此将添加删除查询。

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    对于那个用例,我通常依赖原始查询:

    const { sequelize } = queryInterface;
    
    await sequelize.query(
      `ALTER TABLE table1
       RENAME TO table2`,
      {
        type: QueryTypes.RAW,
        raw: true,
        transaction,
      },
    );
    

    【讨论】:

    • 为什么是原始查询但是? sequelize 还不够吗?
    • Sequelize 支持这个,但我只是习惯这样做
    • 不回答我的问题我需要这个工作续集
    • 我认为 Sequelize 确实会创建额外的表以允许 safe/strong 迁移。 github.com/ankane/strong_migrations#renaming-a-table 所以当你重命名一个表时,这是一个阻塞操作,这意味着如果你有很多对数据库的请求,它会锁定那个表(如果它创建一个更新的表就不会发生这种情况)所以我认为 Sequelize 行为实现了这一点以允许强大的迁移。如果它对您没有问题,您可以执行我展示的raw 查询,或者您可以按照自己的方式创建一个新表,您需要删除该table1
    • 与原始查询也一样。你能发布完整的代码吗?我想我犯了一些错误
    猜你喜欢
    • 2018-09-27
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多