登录
首页 >  数据库 >  MySQL

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

来源:SegmentFault

时间:2023-02-17 15:41:50 132浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《Mysql 出现the right syntax to use near USING BTREE错误解决办法》,就很适合你!文章讲解的知识点主要包括MySQL,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

如果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
错误了~

本篇关于《Mysql 出现the right syntax to use near USING BTREE错误解决办法》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表