database_fix_teacher_name.sql 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. -- ================================================================
  2. -- 贫困生认定申请表 teacher_name 字段修复脚本
  3. -- 文件: database_fix_teacher_name.sql
  4. -- 功能: 添加缺失的 teacher_name 字段,并确保允许NULL
  5. -- ================================================================
  6. USE hzdyjs_xg;
  7. -- 1. 检查 teacher_name 字段是否存在
  8. SELECT '开始检查 teacher_name 字段...' AS message;
  9. SELECT
  10. COLUMN_NAME,
  11. IS_NULLABLE,
  12. COLUMN_DEFAULT,
  13. DATA_TYPE
  14. FROM INFORMATION_SCHEMA.COLUMNS
  15. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  16. AND TABLE_NAME = 'jcbt_poverty_application'
  17. AND COLUMN_NAME = 'teacher_name';
  18. -- 2. 添加 teacher_name 字段(如果不存在)
  19. SET @sql = '';
  20. SELECT COUNT(*) INTO @count
  21. FROM INFORMATION_SCHEMA.COLUMNS
  22. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  23. AND TABLE_NAME = 'jcbt_poverty_application'
  24. AND COLUMN_NAME = 'teacher_name';
  25. SELECT IF(@count = 0,
  26. 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;',
  27. 'SELECT ''teacher_name 字段已存在,检查是否需要修改属性'' AS result;'
  28. ) INTO @sql;
  29. PREPARE stmt FROM @sql;
  30. EXECUTE stmt;
  31. DEALLOCATE PREPARE stmt;
  32. -- 3. 修改 teacher_name 字段为允许 NULL(如果字段存在且不允许NULL)
  33. SET @sql = '';
  34. SELECT COUNT(*) INTO @count
  35. FROM INFORMATION_SCHEMA.COLUMNS
  36. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  37. AND TABLE_NAME = 'jcbt_poverty_application'
  38. AND COLUMN_NAME = 'teacher_name'
  39. AND IS_NULLABLE = 'NO';
  40. SELECT IF(@count > 0,
  41. 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'';',
  42. 'SELECT ''teacher_name 字段已允许NULL'' AS result;'
  43. ) INTO @sql;
  44. PREPARE stmt FROM @sql;
  45. EXECUTE stmt;
  46. DEALLOCATE PREPARE stmt;
  47. SELECT '✅ teacher_name 字段修复完成' AS message;
  48. -- 4. 添加 teacher_id 字段(如果不存在)
  49. SET @sql = '';
  50. SELECT COUNT(*) INTO @count
  51. FROM INFORMATION_SCHEMA.COLUMNS
  52. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  53. AND TABLE_NAME = 'jcbt_poverty_application'
  54. AND COLUMN_NAME = 'teacher_id';
  55. SELECT IF(@count = 0,
  56. 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'' AFTER class_name;',
  57. 'SELECT ''teacher_id 字段已存在'' AS result;'
  58. ) INTO @sql;
  59. PREPARE stmt FROM @sql;
  60. EXECUTE stmt;
  61. DEALLOCATE PREPARE stmt;
  62. -- 5. 确保 teacher_id 字段允许 NULL
  63. SELECT '检查 teacher_id 字段...' AS message;
  64. SET @sql = '';
  65. SELECT COUNT(*) INTO @count
  66. FROM INFORMATION_SCHEMA.COLUMNS
  67. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  68. AND TABLE_NAME = 'jcbt_poverty_application'
  69. AND COLUMN_NAME = 'teacher_id'
  70. AND IS_NULLABLE = 'NO';
  71. SELECT IF(@count > 0,
  72. 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'';',
  73. 'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;'
  74. ) INTO @sql;
  75. PREPARE stmt FROM @sql;
  76. EXECUTE stmt;
  77. DEALLOCATE PREPARE stmt;
  78. SELECT '✅ teacher_id 字段修复完成' AS message;
  79. -- 6. 验证修复结果
  80. SELECT '=== 修复结果验证 ===' AS message;
  81. SELECT
  82. COLUMN_NAME AS '字段名',
  83. DATA_TYPE AS '数据类型',
  84. IS_NULLABLE AS '允许NULL',
  85. COLUMN_DEFAULT AS '默认值',
  86. COLUMN_COMMENT AS '注释'
  87. FROM INFORMATION_SCHEMA.COLUMNS
  88. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  89. AND TABLE_NAME = 'jcbt_poverty_application'
  90. AND COLUMN_NAME IN ('teacher_id', 'teacher_name')
  91. ORDER BY ORDINAL_POSITION;
  92. -- 7. 显示完整的字段结构确认
  93. SELECT '=== 相关字段结构确认 ===' AS message;
  94. SELECT
  95. COLUMN_NAME AS '字段名',
  96. DATA_TYPE AS '数据类型',
  97. IS_NULLABLE AS '允许NULL',
  98. COLUMN_DEFAULT AS '默认值',
  99. COLUMN_COMMENT AS '注释'
  100. FROM INFORMATION_SCHEMA.COLUMNS
  101. WHERE TABLE_SCHEMA = 'hzdyjs_xg'
  102. AND TABLE_NAME = 'jcbt_poverty_application'
  103. AND COLUMN_NAME IN (
  104. 'class_id', 'class_name', 'teacher_id', 'teacher_name', 'recognition_group'
  105. )
  106. ORDER BY ORDINAL_POSITION;
  107. SELECT '🎉 teacher_name 和 teacher_id 字段修复完成!' AS message;
  108. SELECT '📝 请重启后端服务以生效!' AS note;