建表语句如下:
CREATE TABLE `user` (
`userId` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(20) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`phone` varchar(11) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` bit(1) DEFAULT NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
预期是往表中phone后添加一个字段,sql语句如下:
ALTER TABLE USER ADD is_vip TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否是VIP,0-否,1-是' AFTER 'phone';
执行语句,报如下错误:
那么问题来了,语句看起来没什么毛病,在phone后面添加is_vip字段,百撕不得骑姐。。。
看问题报错信息是语句中的phone出的问题,于是把 AFTER 'phone’去掉,执行成功,但是字段会添加在最后面,那么问题就初出现在AFTER 后面。。。最后发现是因为 ‘phone’ 会解析成字符串,而不是表中的phone字段。
解决方法有两个:
1、最直接的方式,把phone的单引号去掉,直接直接写字段名称。
ALTER TABLE USER ADD is_vip TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否是VIP,0-否,1-是' AFTER phone;
2、把引号改成反引号
ALTER TABLE USER ADD is_vip TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否是VIP,0-否,1-是' AFTER `phone`;
反引号的键盘上输入方式是第二排的第一个,也就是1左边的那个键,切换成英文输入,直接按,不用按住shift