-- ================================================================ -- 贫困生认定申请表 teacher_name 字段修复脚本 -- 文件: database_fix_teacher_name.sql -- 功能: 添加缺失的 teacher_name 字段,并确保允许NULL -- ================================================================ USE hzdyjs_xg; -- 1. 检查 teacher_name 字段是否存在 SELECT '开始检查 teacher_name 字段...' AS message; SELECT COLUMN_NAME, IS_NULLABLE, COLUMN_DEFAULT, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME = 'teacher_name'; -- 2. 添加 teacher_name 字段(如果不存在) SET @sql = ''; SELECT COUNT(*) INTO @count FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME = 'teacher_name'; SELECT IF(@count = 0, 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;', 'SELECT ''teacher_name 字段已存在,检查是否需要修改属性'' AS result;' ) INTO @sql; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 3. 修改 teacher_name 字段为允许 NULL(如果字段存在且不允许NULL) SET @sql = ''; SELECT COUNT(*) INTO @count FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME = 'teacher_name' AND IS_NULLABLE = 'NO'; SELECT IF(@count > 0, 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'';', 'SELECT ''teacher_name 字段已允许NULL'' AS result;' ) INTO @sql; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT '✅ teacher_name 字段修复完成' AS message; -- 4. 添加 teacher_id 字段(如果不存在) SET @sql = ''; SELECT COUNT(*) INTO @count FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME = 'teacher_id'; SELECT IF(@count = 0, 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'' AFTER class_name;', 'SELECT ''teacher_id 字段已存在'' AS result;' ) INTO @sql; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 5. 确保 teacher_id 字段允许 NULL SELECT '检查 teacher_id 字段...' AS message; SET @sql = ''; SELECT COUNT(*) INTO @count FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME = 'teacher_id' AND IS_NULLABLE = 'NO'; SELECT IF(@count > 0, 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'';', 'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;' ) INTO @sql; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT '✅ teacher_id 字段修复完成' AS message; -- 6. 验证修复结果 SELECT '=== 修复结果验证 ===' AS message; SELECT COLUMN_NAME AS '字段名', DATA_TYPE AS '数据类型', IS_NULLABLE AS '允许NULL', COLUMN_DEFAULT AS '默认值', COLUMN_COMMENT AS '注释' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME IN ('teacher_id', 'teacher_name') ORDER BY ORDINAL_POSITION; -- 7. 显示完整的字段结构确认 SELECT '=== 相关字段结构确认 ===' AS message; SELECT COLUMN_NAME AS '字段名', DATA_TYPE AS '数据类型', IS_NULLABLE AS '允许NULL', COLUMN_DEFAULT AS '默认值', COLUMN_COMMENT AS '注释' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hzdyjs_xg' AND TABLE_NAME = 'jcbt_poverty_application' AND COLUMN_NAME IN ( 'class_id', 'class_name', 'teacher_id', 'teacher_name', 'recognition_group' ) ORDER BY ORDINAL_POSITION; SELECT '🎉 teacher_name 和 teacher_id 字段修复完成!' AS message; SELECT '📝 请重启后端服务以生效!' AS note;