Expected one result (or null) to be returned by selectOne(), but found: 5…
这个错误比较简单,提示也很明显
MySQL 表字段唯一性约束设置unique
分析:
mybatis-plus中使用的selectOne()方法,由于只能返回一个对象的结果,当返回到多个对象的结果集时报错;如果是单纯的因为selectOne()出错,可以将selectOne 换成 selectList(),使用list接收。
解决方案:
1.如果是 selectOne() 方法用错了,改成 selectList() 接收就可以了;
2.如果是正常情况下就返回一条,那就是数据库设计有点问题,需要完善添加唯一索引;
MySQL 表字段添加唯一索引方法(unique):
ALTER TABLE 表名 ADD UNIQUE(字段名);
例:
#设置user表中的phone_num为唯一索引
ALTER TABLE kd_user ADD UNIQUE(phone_number);
顺便说一下建表时添加唯一约束示例:
CREATE TABLE `kd_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT, -----非空自增
`username` varchar(20) NOT NULL unique, -----非空唯一性约束
`password` varchar(20) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
对已经有索引的字段删除unique索引:
#删除fans表中的 user_id 唯一索引
ALTER TABLE kd_fans
DROP INDEX user_id