为什么注册第二个用户会注册失败

来源:4-2 编码实战:实现用户注册接口

蒋堪

2020-01-15

为什么可以注册第一个用户,但注册第二个用户就不行了,我debug了两个晚上,都没法注册,到这里来看,突然想起来提问区,就来看看,说是唯一索引的问题!!!!唯一索引到底引发了什么问题,我明明两个用户名是不一样的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

写回答

1回答

xiaomo

2020-01-16

抱歉, 同学少稍安勿躁哦, 详细参考下这里, 数据库表索引有修改过, 可以参考下这个问题: 
http://coding.imooc.com/learn/questiondetail/114480.html

也可以参考下git仓库中的文档说明. 其中用户表建表语句如下:

CREATE TABLE `tbl_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(64) NOT NULL DEFAULT '' COMMENT '用户名',
`user_pwd` varchar(256) NOT NULL DEFAULT '' COMMENT '用户encoded密码',
`email` varchar(64) DEFAULT '' COMMENT '邮箱',
`phone` varchar(128) DEFAULT '' COMMENT '手机号',
`email_validated` tinyint(1) DEFAULT 0 COMMENT '邮箱是否已验证',
`phone_validated` tinyint(1) DEFAULT 0 COMMENT '手机号是否已验证',
`signup_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册日期',
`last_active` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后活跃时间戳',
`profile` text COMMENT '用户属性',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '账户状态(启用/禁用/锁定/标记删除等)',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`user_name`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

唯一索引原来用在了phone字段上, 如果插入表的时候, phone使用了默认值(空值), 就会引发冲突.

0
1
蒋堪
噢耶!
2020-01-16
共1条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程