更新
This commit is contained in:
@@ -53,12 +53,42 @@ def add_index_if_missing(
|
||||
conn.execute(text(f"CREATE INDEX {index_name} ON {table} ({safe_columns})"))
|
||||
|
||||
|
||||
def widen_mysql_text_columns(conn, table: str, columns: tuple[str, ...]) -> None:
|
||||
"""Upgrade large account payloads from TEXT to LONGTEXT on MySQL.
|
||||
|
||||
SQLite and PostgreSQL TEXT values are not limited to 64 KiB, while MySQL
|
||||
TEXT is. Browser storage_state and full-page QR/captcha screenshots can
|
||||
legitimately exceed that size.
|
||||
"""
|
||||
if _dialect(conn) != "mysql":
|
||||
return
|
||||
allowed = {"cookie_data", "im_session_data", "qr_code_base64"}
|
||||
try:
|
||||
reflected = {
|
||||
item["name"]: str(item.get("type") or "").upper()
|
||||
for item in inspect(conn).get_columns(table)
|
||||
}
|
||||
except Exception:
|
||||
return
|
||||
for column in columns:
|
||||
if column not in allowed or column not in reflected:
|
||||
continue
|
||||
if reflected[column] == "LONGTEXT":
|
||||
continue
|
||||
conn.execute(
|
||||
text(f"ALTER TABLE {table} MODIFY COLUMN {column} LONGTEXT NULL")
|
||||
)
|
||||
|
||||
|
||||
def migrate_accounts_table(conn) -> None:
|
||||
add_column_if_missing(
|
||||
conn,
|
||||
"accounts",
|
||||
"cookie_data",
|
||||
{"default": "ALTER TABLE accounts ADD COLUMN cookie_data TEXT"},
|
||||
{
|
||||
"default": "ALTER TABLE accounts ADD COLUMN cookie_data TEXT",
|
||||
"mysql": "ALTER TABLE accounts ADD COLUMN cookie_data LONGTEXT",
|
||||
},
|
||||
)
|
||||
add_column_if_missing(
|
||||
conn,
|
||||
@@ -73,7 +103,10 @@ def migrate_accounts_table(conn) -> None:
|
||||
conn,
|
||||
"accounts",
|
||||
"im_session_data",
|
||||
{"default": "ALTER TABLE accounts ADD COLUMN im_session_data TEXT"},
|
||||
{
|
||||
"default": "ALTER TABLE accounts ADD COLUMN im_session_data TEXT",
|
||||
"mysql": "ALTER TABLE accounts ADD COLUMN im_session_data LONGTEXT",
|
||||
},
|
||||
)
|
||||
add_column_if_missing(
|
||||
conn,
|
||||
@@ -138,6 +171,11 @@ def migrate_accounts_table(conn) -> None:
|
||||
"douyin_uid",
|
||||
{"default": "ALTER TABLE accounts ADD COLUMN douyin_uid VARCHAR(64)"},
|
||||
)
|
||||
widen_mysql_text_columns(
|
||||
conn,
|
||||
"accounts",
|
||||
("cookie_data", "im_session_data", "qr_code_base64"),
|
||||
)
|
||||
|
||||
|
||||
def migrate_account_videos_table(conn) -> None:
|
||||
|
||||
Reference in New Issue
Block a user