diff --git a/migrations/versions/e5f6a7b8c9d0_add_recovery_challenges_table.py b/migrations/versions/e5f6a7b8c9d0_add_recovery_challenges_table.py index 44084a9..2112f6b 100644 --- a/migrations/versions/e5f6a7b8c9d0_add_recovery_challenges_table.py +++ b/migrations/versions/e5f6a7b8c9d0_add_recovery_challenges_table.py @@ -18,6 +18,7 @@ delete expired rows without a full scan. """ from alembic import op import sqlalchemy as sa +from sqlalchemy.dialects.mysql import INTEGER as mysql_INTEGER revision = 'e5f6a7b8c9d0' @@ -29,10 +30,10 @@ depends_on = None def upgrade(): op.create_table( 'recovery_challenges', - sa.Column('id', sa.Integer(), nullable=False, autoincrement=True), + sa.Column('id', mysql_INTEGER(unsigned=True), nullable=False, autoincrement=True), # user_id must be INTEGER UNSIGNED to match users.id (UNSIGNED primary key). # MySQL 8 enforces strict type compatibility for foreign keys. - sa.Column('user_id', sa.Integer(unsigned=True), nullable=False), + sa.Column('user_id', mysql_INTEGER(unsigned=True), nullable=False), sa.Column('nonce', sa.String(64), nullable=False), sa.Column('expected_proof', sa.String(64), nullable=False), sa.Column('expires_at', sa.DateTime(), nullable=False),