mysql right syntax_Mysql 出现the right syntax to use near USING BTREE错误解决办法

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

使用下面的SQL语句创建表:

CREATE TABLE `message_info_tbl` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`phone` varchar(12) DEFAULT NULL COMMENT '手机号',

`code` varchar(20) NOT NULL COMMENT '验证码',

`ip` varchar(15) NOT NULL,

`create_at` int(10) NOT NULL COMMENT '发送时间',

`used_state` enum('yes','no') NOT NULL DEFAULT 'no' COMMENT '是否使用',

`type` enum('find','register') NOT NULL DEFAULT 'register' COMMENT '作用类型',

`client_type` enum('app','pc','wap') NOT NULL DEFAULT 'pc' COMMENT '客户端类型',

PRIMARY KEY (`id`),

KEY `phone` (`phone`) USING BTREE,

KEY `code` (`code`) USING BTREE,

KEY `used_state` (`used_state`) USING BTREE,

KEY `ip` (`ip`) USING BTREE,

KEY `tl` (`tl`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='信息详情';

错误:

PRIMARY KEY (`id`),

KEY `phone` (`phone`) USING BTREE,

KEY `code` (`code`) USING BTREE,

KEY `used_state` (`used_state`) USING BTREE,

KEY `ip` (`ip`) USING BTREE,

KEY `tl` (`tl`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=gbk 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 'USING BTREE,

KEY `code` (`code`) USING BTREE,

KEY `used_s

因为mysql新版本的USING BTREE语法与老版本有些不同(mysql5.14前后)

我们只需要将文件中的形如:

KEY `code` (`code`) USING BTREE

改为

KEY `code` USING BTREE(`code`)

意外:

如果改了之后还不起作用,则需要查看你的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错误了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值