From 22fff0660e46ebcf54a819f054d740ee61ad4fa6 Mon Sep 17 00:00:00 2001 From: Nguyen Ngo Date: Sun, 17 May 2026 18:34:29 -0400 Subject: [PATCH] 05/17 fix migration script 2 --- .../versions/e5f6a7b8c9d0_add_recovery_challenges_table.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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),