Files
rlz/修复nick_name字段错误.md
2026-01-26 15:02:59 +08:00

90 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 修复 nick_name 字段错误
## 问题描述
微信登录时出现错误:
```
Field 'nick_name' doesn't have a default value
```
## 问题原因
1. **数据库表结构**`sys_user` 表中的 `nick_name` 字段定义为 `NOT NULL` 且无默认值
2. **代码问题**:微信登录代码在创建新用户时未设置 `nick_name` 字段值
## 解决方案
### ✅ 方案1代码修复已实施
`SysLoginController.java``weixinLogin` 方法中,创建新用户时添加了 `nick_name` 字段的设置:
```java
user.setNickName(phoneNumber); // 使用手机号作为默认昵称
```
**修改位置**
- 文件:`ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java`
- 行号:约 203 行
### 方案2数据库表结构修改可选
如果需要更灵活的方案,可以修改数据库表结构,允许 `nick_name` 为 NULL
```sql
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
## 修复步骤
1.**代码修复**:已在创建用户时设置 `nick_name`
2.**数据库字段**`openid` 字段已添加
3. ⚠️ **建议**:重启后端服务以应用代码更改
## 测试
修复后,请重新测试微信登录功能:
1. 在小程序中重新尝试登录
2. 应该不再出现 `Field 'nick_name' doesn't have a default value` 错误
3. 新用户创建时,`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` 会使用手机号作为默认值
- 如果需要更灵活的昵称设置,可以考虑从微信用户信息中获取昵称