Files
hzdyjs/docs/设计文档/database/学工管理-学生信息管理/11-student-info-field-name-fix.sql
T
2025-07-19 10:18:27 +08:00

122 lines
5.7 KiB
SQL

-- ==========================================
-- 学生信息表字段名修复脚本
-- 版本:V2.1.0
-- 功能:修复字段名不匹配问题
-- 作者:Cursor AI 辅助
-- 时间:2025-01-12
-- 问题:数据库字段名与实体类字段名(驼峰转下划线)不匹配
-- ==========================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 修复 xg_student_info 表字段名
-- ----------------------------
-- 1. 添加缺失的字段
ALTER TABLE `xg_student_info`
ADD COLUMN `current_address` varchar(200) DEFAULT NULL COMMENT '现住址' AFTER `wechat`,
ADD COLUMN `domicile_place` varchar(100) DEFAULT NULL COMMENT '户籍所在地' AFTER `home_address`,
ADD COLUMN `special_condition` varchar(200) DEFAULT NULL COMMENT '特殊体质或疾病' AFTER `weight`;
-- 2. 重命名字段以匹配实体类
ALTER TABLE `xg_student_info`
CHANGE COLUMN `emergency_contact` `emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名',
CHANGE COLUMN `emergency_relation` `emergency_contact_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
CHANGE COLUMN `emergency_phone` `emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
CHANGE COLUMN `father_job` `father_work_unit` varchar(100) DEFAULT NULL COMMENT '父亲工作单位',
CHANGE COLUMN `mother_job` `mother_work_unit` varchar(100) DEFAULT NULL COMMENT '母亲工作单位',
CHANGE COLUMN `is_from_poor_family` `is_poor_student` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是';
-- 3. 删除不需要的重复字段(如果存在)
-- ALTER TABLE `xg_student_info` DROP COLUMN IF EXISTS `home_zip_code`;
-- ALTER TABLE `xg_student_info` DROP COLUMN IF EXISTS `family_zip_code`;
-- 4. 确保邮政编码字段正确
ALTER TABLE `xg_student_info`
CHANGE COLUMN `home_zip_code` `postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码';
-- ----------------------------
-- 验证修复结果
-- ----------------------------
-- 检查关键字段是否存在
SELECT '=== 字段修复验证 ===' as 'Result';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ current_address 字段存在' ELSE '❌ current_address 字段缺失' END as 'current_address_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ domicile_place 字段存在' ELSE '❌ domicile_place 字段缺失' END as 'domicile_place_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'domicile_place';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_name 字段存在' ELSE '❌ emergency_contact_name 字段缺失' END as 'emergency_contact_name_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_name';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_relation 字段存在' ELSE '❌ emergency_contact_relation 字段缺失' END as 'emergency_contact_relation_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_relation';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_phone 字段存在' ELSE '❌ emergency_contact_phone 字段缺失' END as 'emergency_contact_phone_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_phone';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ father_work_unit 字段存在' ELSE '❌ father_work_unit 字段缺失' END as 'father_work_unit_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_work_unit';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ mother_work_unit 字段存在' ELSE '❌ mother_work_unit 字段缺失' END as 'mother_work_unit_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_work_unit';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ special_condition 字段存在' ELSE '❌ special_condition 字段缺失' END as 'special_condition_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ is_poor_student 字段存在' ELSE '❌ is_poor_student 字段缺失' END as 'is_poor_student_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student';
SELECT
CASE WHEN COUNT(*) > 0 THEN '✅ postal_code 字段存在' ELSE '❌ postal_code 字段缺失' END as 'postal_code_check'
FROM information_schema.COLUMNS
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'postal_code';
-- 测试之前报错的SQL查询
SELECT '=== SQL查询测试 ===' as 'Result';
SELECT COUNT(*) as '查询测试结果'
FROM xg_student_info
WHERE tenant_id = '000000'
AND deleted = 0
LIMIT 1;
-- 显示最终表结构
SELECT '=== 最终表结构 ===' as 'Result';
DESC xg_student_info;
-- 恢复外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- ----------------------------
-- 脚本执行完成提示
-- ----------------------------
SELECT '==============================' as 'Result';
SELECT '✅ 字段名修复完成!' as 'Result';
SELECT '✅ 所有字段名已与实体类匹配' as 'Result';
SELECT '✅ MyBatis-Plus 字段映射已修复' as 'Result';
SELECT '请重启后端服务并重新测试' as 'Result';
SELECT '==============================' as 'Result';