2.5 KiB
2.5 KiB
修复 nick_name 字段错误
问题描述
微信登录时出现错误:
Field 'nick_name' doesn't have a default value
问题原因
- 数据库表结构:
sys_user表中的nick_name字段定义为NOT NULL且无默认值 - 代码问题:微信登录代码在创建新用户时未设置
nick_name字段值
解决方案
✅ 方案1:代码修复(已实施)
在 SysLoginController.java 的 weixinLogin 方法中,创建新用户时添加了 nick_name 字段的设置:
user.setNickName(phoneNumber); // 使用手机号作为默认昵称
修改位置:
- 文件:
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java - 行号:约 203 行
方案2:数据库表结构修改(可选)
如果需要更灵活的方案,可以修改数据库表结构,允许 nick_name 为 NULL:
ALTER TABLE sys_user
MODIFY COLUMN nick_name VARCHAR(30) DEFAULT NULL COMMENT '用户昵称';
执行脚本:sql/fix_nick_name_default.sql
数据库表检查结果
✅ 所有核心表都已正常创建
- ✓ sys_user
- ✓ sys_role
- ✓ sys_menu
- ✓ sys_dept
- ✓ sys_post
- ✓ sys_config
- ✓ sys_dict_type
- ✓ sys_dict_data
- ✓ sys_notice
- ✓ sys_oper_log
- ✓ sys_logininfor
sys_user 表结构
必填但无默认值的字段:
user_name(varchar(30)) - 用户账号nick_name(varchar(30)) - 用户昵称
已添加的字段:
- ✓
openid(varchar(100)) - 微信openid
修复步骤
- ✅ 代码修复:已在创建用户时设置
nick_name - ✅ 数据库字段:
openid字段已添加 - ⚠️ 建议:重启后端服务以应用代码更改
测试
修复后,请重新测试微信登录功能:
- 在小程序中重新尝试登录
- 应该不再出现
Field 'nick_name' doesn't have a default value错误 - 新用户创建时,
nick_name会自动设置为手机号
相关文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java- 微信登录控制器sql/check_tables.py- 数据库表检查脚本sql/fix_nick_name_default.sql- 数据库表结构修复脚本(可选)sql/fix_openid_field.py- openid 字段添加脚本(已执行)
注意事项
- 如果后端服务正在运行,需要重启服务以应用代码更改
- 新用户创建时,
nick_name会使用手机号作为默认值 - 如果需要更灵活的昵称设置,可以考虑从微信用户信息中获取昵称