mysql "the right syntax to use near 'not null comment '身份'"

create table admin(

id int(4) not null primary key auto_increment comment '用户id',

uname varchar(50) not null unique comment '用户名',

passwd varchar(50) not null comment '密码',

degree varchar(200) check (degree = '管理员' or degree = '普通用户') not null comment '身份',

popedom int(4) check (popedom = 0 or degree = 1) not null comment '权限',

truename varchar(50)  comment '真实姓名',

sex varchar(20) check (sex = '男' or sex = '女') comment '性别', 

age int(4) check (age >=0 and age <=100) comment '年龄',

phone varchar(50) comment unique '手机号码',

address varchar(200) comment '家庭地址',
)

报错信息:

[Err] 1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near 'not null comment '身份',
popedom int(4) check (popedom = 0 or degree = 1) n' at line 9

求解答下!!万分感激

阅读 9.8k
1 个回答
create table admin(

id int(4) not null primary key auto_increment comment '用户id',

uname varchar(50) not null unique comment '用户名',

passwd varchar(50) not null comment '密码',

degree varchar(200)  not null comment '身份' check (degree = '管理员' or degree = '普通用户'),

popedom int(4)not null comment '权限' check (popedom = 0 or degree = 1) ,

truename varchar(50)  comment '真实姓名',

sex varchar(20)comment '性别' check (sex = '男' or sex = '女') , 

age int(4)comment '年龄' check (age >=0 and age <=100) ,

phone varchar(50) unique comment '手机号码',

address varchar(200) comment '家庭地址'
);

像上面,调换一下所有语句中check子句的位置和倒数第二个字段unique的位置,可以成功建表。

但是,请注意: MySQL并不支持check,虽然能把表建出来,但里面的check子句都是全部忽略的(加了也没任何效果),详情请参考官方文档:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

“所有的存储引擎均对CHECK子句进行解析,但是忽略CHECK子句。”
The CHECK clause is parsed but ignored by all storage engines.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题