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

2.5 KiB
Raw Blame History

修复 nick_name 字段错误

问题描述

微信登录时出现错误:

Field 'nick_name' doesn't have a default value

问题原因

  1. 数据库表结构sys_user 表中的 nick_name 字段定义为 NOT NULL 且无默认值
  2. 代码问题:微信登录代码在创建新用户时未设置 nick_name 字段值

解决方案

方案1代码修复已实施

SysLoginController.javaweixinLogin 方法中,创建新用户时添加了 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

修复步骤

  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 会使用手机号作为默认值
  • 如果需要更灵活的昵称设置,可以考虑从微信用户信息中获取昵称