执行Mysql语句报错:the right syntax to use near 'USING BTREE' 解决办法

具体sql语句如下:

use jjj;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`userid`  int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号' ,
`phone`  varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号' ,
`password`  varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录密码' ,
`tradepwd`  varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '交易密码' ,
`name`  varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称' ,
`logo`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`type`  int(2) NULL DEFAULT NULL COMMENT '类型1普通用户2代理商' ,
`templateId`  int(11) NULL DEFAULT NULL COMMENT '类型模板' ,
`authState`  int(2) NULL DEFAULT 0 COMMENT '实名认证(0未认证,1认证中,2认证成功,3认证失败)' ,
`idNum`  varchar(24) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号码' ,
`realName`  varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '真实姓名' ,
`frontImg`  varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证正面照' ,
`reverseImg`  varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证反面照' ,
`fullImg`  varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '大头照' ,
`authRemark`  varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实名认证备注' ,
`state`  int(2) NULL DEFAULT 1 COMMENT '状态 1正常 0禁用' ,
`referrer`  int(11) NULL DEFAULT NULL COMMENT '推荐人' ,
`frozenday`  int(11) NULL DEFAULT NULL COMMENT '采用系统默认周期' ,
`xcode`  varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '二维码' ,
`inviteCode`  varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邀请码' ,
`createtime`  datetime NULL DEFAULT NULL COMMENT '创建时间' ,
`endtime`  datetime NULL DEFAULT NULL ,
`switchbtn`  int(11) NULL DEFAULT 0 COMMENT 'ctc交易开关' ,
PRIMARY KEY (`userid`),
UNIQUE INDEX `phone` (`phone`) USING BTREE ,
UNIQUE INDEX `inviteCode` (`inviteCode`) USING BTREE
 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
COMMENT='用户'
AUTO_INCREMENT=1077
;

报错截图如下:

执行Mysql语句报错:the right syntax to use near 'USING BTREE' 解决办法_第1张图片

原因:MySQL在创建表时, 出现the right syntax to use near USING BTREE这样的错误,莫惊慌,因为这是MySQL的版本引起的。

解决方法:

UNIQUE INDEX `phone` (`phone`) USING BTREE ,
UNIQUE INDEX `inviteCode` (`inviteCode`) USING BTREE
  

改成:

UNIQUE INDEX `phone` USING BTREE(`phone`) ,
UNIQUE INDEX `inviteCode` USING BTREE
 (`inviteCode`)

 

如果改了之后还不起作用,则需要查看你的MySQL版本了,通过命令select version(); 查看,我的MySQL版本为 4.0.27经典版的, 所以,使用以上的方法还不能解决问题,所以,就要用最原始的方法,去掉USING BTREE关键字,并且SQL语句里边不能有字段注释comments,所以,低版本MySQL的语句为下面这样的:

mysql> select version(); 
+-----------+ 
| version() | 
+-----------+ 
| 4.0.27 | 
+-----------+ 
1 row in set (0.12 sec) 
Mysql 低版本语句:

CREATE TABLE `message_info_tbl` (
`id`  int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`phone`  varchar(12) NULL DEFAULT NULL ,
`code`  varchar(20) NOT NULL DEFAULT '' ,
`ip`  varchar(36) NOT NULL DEFAULT '' ,
`used_state`  enum('yes','no') NOT NULL DEFAULT 'no' ,
`type`  enum('find','register') NOT NULL DEFAULT 'register' ,
`client_type`  enum('pc','app','wap') NOT NULL DEFAULT 'pc' ,
`create_at`  int(10) UNSIGNED NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
INDEX `phone` (`phone`),
INDEX `code` (`code`),
INDEX `used_state` (`used_state`),
INDEX `ip` (`ip`)
)
TYPE=InnoDB
ROW_FORMAT=DYNAMIC
;
OK ,这样就可以解决 USING BTREE错误了~

你可能感兴趣的:(mysql)