Обратный sql, который отменяет запрос - PullRequest
0 голосов
/ 06 апреля 2020

запрос:

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
        )
    ]

, я получаю IrreversibleError. Я думаю, что если я предоставлю реверс sql вместо None, он может работать

1 Ответ

0 голосов
/ 06 апреля 2020

Я думаю, вам не повезло, вы ищете необработанное решение из postgresql, так как транзакция SQL уже была подтверждена миграцией Django. См. Postgresql ROLLBACK

Но в этом случае вы можете вернуться к последней рабочей миграции, используя:

./manage.py migrate app XXXX_last_working_migration

Как указано в Django 's django -admin docs переносит раздел сюда

...