资讯专栏INFORMATION COLUMN

Mysql 出现the right syntax to use near USING BTREE错误

gougoujiang / 2291人阅读

摘要:如果在创建表时,出现这样的错误,莫惊慌,因为这是的版本引起的。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47075.html

相关文章

  • Mysql常见错误码讲解

    摘要:当这些错误发生时,数据就无法访问了,并且一直永久的无法访问。错误可能意味着表定义中字段的数量和大小超过了一些限制。添加外键错误,检查外键关联的两个字段数据类型是否一致。 Error code 1064: Syntax error 假设有一个sql语句 select LastName, FirstName,from Person 执行的时候会包错误 Error Code: 1064. ...

    BearyChat 评论0 收藏0
  • 记一次 Hibernate 数据表创建失败

    摘要:实体关系映射建了四个实体,启动程序。打开数据库,发现只生成了三张表。与都创建成功,只有表创建失败。同时,控制台也报出了如下错误大致意思就是你的表中有一个语法错误,导致了创建表失败。原因猜测应该是属于中的关键字,所以会报语法错误。 实体关系映射 建了四个实体,启动程序。 showImg(https://segmentfault.com/img/bVbbJyY?w=410&h=188); ...

    gnehc 评论0 收藏0
  • 记一次 Hibernate 数据表创建失败

    摘要:实体关系映射建了四个实体,启动程序。打开数据库,发现只生成了三张表。与都创建成功,只有表创建失败。同时,控制台也报出了如下错误大致意思就是你的表中有一个语法错误,导致了创建表失败。原因猜测应该是属于中的关键字,所以会报语法错误。 实体关系映射 建了四个实体,启动程序。 showImg(https://segmentfault.com/img/bVbbJyY?w=410&h=188); ...

    Chaz 评论0 收藏0
  • MySQL 预处理语句prepare、execute、deallocate的使用

    摘要:不仅如此,如果一个的预处理语句过多,可能会达到的上限值。预处理语句只能在创建者的会话中可以使用,其他会话是无法使用的。而且在任意方式正常或非正常退出会话时,之前定义好的预处理语句将不复存在。 原文地址:MySQL预处理语句prepare、execute、deallocate的使用 语法 PREPARE stmt_name FROM preparable_stmt EXECUTE st...

    Galence 评论0 收藏0
  • mysql】[error]group_concat造成的sql语法错误

    摘要:错误实例完整错误原因中多了一个逗号执行结构有大小限制,会根据大小进行截取参考手册 sql错误实例 $sql_id = select group_concat(`table_a_id`) from `table_b`; $id_str = $db->execute($sql_id); $sql = select * from `table_a` where `id` in ( {$id...

    kevin 评论0 收藏0

发表评论

0条评论

gougoujiang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<