Migration-Bugfix: DDL statementweise statt als Multi-Statement-Block ausführen
CI / backend-tests (push) Failing after 1s

asyncpg (SQLAlchemy async) lässt keine Mehrfach-Statements in einem prepared
statement zu - "cannot insert multiple commands into a prepared statement".
Aufgetreten beim ersten echten alembic upgrade head auf dem Zielserver.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
This commit is contained in:
2026-09-03 23:06:44 +02:00
co-authored by Claude Sonnet 5
parent b5c46cf648
commit 035b22fd1e
2 changed files with 26 additions and 2 deletions
@@ -283,9 +283,21 @@ DROP TYPE IF EXISTS materialtyp;
"""
def _execute_statements(sql: str) -> None:
# asyncpg lässt keine Mehrfach-Statements in einem prepared statement zu
# (Fund beim ersten realen `alembic upgrade head` gegen asyncpg) jedes
# ";"-getrennte Statement einzeln ausführen. Kein Statement in diesem
# Schema enthält ein Semikolon innerhalb eines String-/Kommentarwerts,
# daher ist ein simpler Split sicher.
for statement in sql.split(";"):
statement = statement.strip()
if statement:
op.execute(statement)
def upgrade() -> None:
op.execute(UPGRADE_SQL)
_execute_statements(UPGRADE_SQL)
def downgrade() -> None:
op.execute(DOWNGRADE_SQL)
_execute_statements(DOWNGRADE_SQL)