fix_app_id_nullable.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env python3
  2. """
  3. 修改 oauth_access_tokens 表的 app_id 字段为可空
  4. """
  5. import pymysql
  6. import os
  7. from urllib.parse import urlparse
  8. # 导入配置
  9. import sys
  10. sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
  11. from app.core.config import config_handler
  12. print("=" * 60)
  13. print("修改 oauth_access_tokens 表结构")
  14. print("=" * 60)
  15. # 获取数据库配置
  16. database_url = config_handler.get("admin_app", "DATABASE_URL", "")
  17. parsed = urlparse(database_url)
  18. try:
  19. conn = pymysql.connect(
  20. host=parsed.hostname,
  21. port=parsed.port,
  22. user=parsed.username,
  23. password=parsed.password,
  24. database=parsed.path[1:] if parsed.path else None,
  25. charset='utf8mb4'
  26. )
  27. cursor = conn.cursor()
  28. # 修改 app_id 字段为可空
  29. print("\n修改 app_id 字段为可空...")
  30. cursor.execute("""
  31. ALTER TABLE oauth_access_tokens
  32. MODIFY COLUMN app_id CHAR(36) NULL COMMENT '应用ID(系统内部登录时可为空)'
  33. """)
  34. conn.commit()
  35. print("✅ 修改成功!")
  36. # 验证修改
  37. cursor.execute("DESCRIBE oauth_access_tokens")
  38. columns = cursor.fetchall()
  39. print("\n表结构:")
  40. for col in columns:
  41. if col[0] == 'app_id':
  42. print(f" app_id: {col[1]}, NULL={col[2]}, Key={col[3]}, Default={col[4]}")
  43. cursor.close()
  44. conn.close()
  45. except Exception as e:
  46. print(f"❌ 错误: {e}")
  47. import traceback
  48. traceback.print_exc()
  49. print("\n" + "=" * 60)