MySQL创建auth表报错:语法错误及主键自增定义问题求助
MySQL建表语句报错排查与修复
第一个报错(ERROR 1064)的问题
报错提示语法错误,根源是你把PRIMARY KEY拼写成了PRIMERY KEY,这是典型的拼写错误,修正拼写就能解决这个语法问题。
第二个报错(ERROR 1075)的问题
修正拼写后出现的这个错误,是因为MySQL的规则限制:一个表只能有一个自增字段,且这个自增字段必须被定义为键(主键或唯一键)。
你的语句里id字段加了AUTO_INCREMENT,但没给它设置主键或唯一键,反而把email设成了主键,这就触发了规则冲突。
修复方案
推荐采用自增主键+唯一邮箱的常见设计,既符合MySQL规则,也更利于后续的表关联操作:
CREATE TABLE IF NOT EXISTS auth ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(250) NOT NULL, username VARCHAR(50) UNIQUE, admin BOOLEAN NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
如果坚持要把email作为主键,需要去掉id的AUTO_INCREMENT属性(不推荐这种设计):
CREATE TABLE IF NOT EXISTS auth ( id INT, email VARCHAR(50) UNIQUE NOT NULL PRIMARY KEY, password VARCHAR(250) NOT NULL, username VARCHAR(50) UNIQUE, admin BOOLEAN NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
内容的提问来源于stack exchange,提问作者best_of_man
相关产品推荐
相关产品推荐

