## Bug description

async migrations celery task id will always be "" through the migration

## Expected behavior

It will be set

## How to reproduce

1. Start a migration

## Environment

- [x] PostHog Cloud
- [ ] self-hosted PostHog (ClickHouse-based), version/commit: _please provide_
- [ ] self-hosted PostHog (Postgres-based, legacy), version/commit: _please provide_

## Additional context

The cause is a bad state machine: We set it in #trigger_migration but #mark_async_migration_as_running later in the chain always resets it.

cc @tiina303 and @yakkomajuri for prioritization

#### *Thank you* for your bug report – we love squashing them!

posthog/async_migrations/utils.py
from ee.clickhouse.client import sync_execute
    sync_execute(f"/* {query_id} */ " + sql, settings={"max_execution_time": timeout_seconds})
def execute_op_postgres(sql: str, query_id: str):
    from django.db import connection
    with connection.cursor() as cursor:
        cursor.execute(f"/* {query_id} */ " + sql)
def process_error(migration_instance: AsyncMigration, error: Optional[str]):
    update_async_migration(
        migration_instance=migration_instance,
        status=MigrationStatus.Errored,
        last_error=error or "",
        finished_at=datetime.now(),
    )
    if ASYNC_MIGRATIONS_DISABLE_AUTO_ROLLBACK:
        return
    from posthog.async_migrations.runner import attempt_migration_rollback
    attempt_migration_rollback(migration_instance)
def trigger_migration(migration_instance: AsyncMigration, fresh_start: bool = True):
    from posthog.tasks.async_migrations import run_async_migration
    task = run_async_migration.delay(migration_instance.name, fresh_start)
    update_async_migration(
        migration_instance=migration_instance, celery_task_id=str(task.id),
    )
def force_stop_migration(migration_instance: AsyncMigration, error: str = "Force stopped by user"):