【问题标题】:Reverse sql that undo a query撤消查询的反向sql
【发布时间】:2020-07-18 15:21:07
【问题描述】:

查询:

UPDATE "table_name"
SET properties = properties || jsonb_build_object('$ip', ip)
WHERE ip IS NOT NULL;

我正在运行 Django 迁移,我需要撤消执行此查询的结果并将表恢复到以前状态的反向 sql。

因为当我为以下操作运行 django 迁移测试时:

operations = [
        # migrations.RunPython(migrate_event_ip_to_property, rollback),
        migrations.RunSQL(
            """
            UPDATE "table_name"
            SET properties = properties || jsonb_build_object('$ip', ip)
            WHERE ip IS NOT NULL;
            """,
            None
        )
    ]

我得到不可逆错误。我想如果我提供反向sql,而不是None,它可能会起作用

【问题讨论】:

    标签: postgresql django-migrations


    【解决方案1】:

    我认为您从 postgresql 中寻找原始解决方案并不走运,因为 Django 迁移已经提交了 SQL 事务。见Postgresql ROLLBACK

    但在这种情况下,您可以使用以下方法恢复到上次工作迁移:

    ./manage.py migrate app XXXX_last_working_migration

    如 Django 的 django-admin 文档迁移部分 here 中所述

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-09
      • 2011-01-29
      • 2021-12-22
      • 1970-01-01
      • 2014-09-17
      • 2011-03-26
      • 2011-06-05
      • 2011-12-17
      相关资源
      最近更新 更多