项目场景
SpringBoot
+Vue
前后端分离的项目,在实现前后端交互(注册功能)时出现报错
问题描述
点击注册按钮后显示服务异常
报错提示
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'sex' at row 1
### The error may exist in cn/itcast/user/mapper/UserMapper.java (best guess)
### The error may involve cn.itcast.user.mapper.UserMapper.add-Inline
### The error occurred while setting parameters
### SQL: insert into user(username,sex,password) values(?,?,?)
### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'sex' at row 1
在第一次测试注册功能时,选择了"男",也报错,因此已经重新修改了sex字段的长度,在选择"女"时又出现了报错
但是在postman中点击注册并不会报错
原因分析
这里错误提示数据过长,无法存储到sex
字段中,数据库的设计如下(修改过一次)
在设计时,自己插入的数据是中文字符男
和女
,而在点击注册后,自动以英语的male
和female
存储在数据库中,因此原本的 varchar(2)
和 varchar(4)
就不适合了
解决方案
这里我选择直接修改字段类型,设计为varchar(8)
测试
成功注册,并将用户信息添加到数据中