摘要:如果在创建表时,出现这样的错误,莫惊慌,因为这是的版本引起的。
如果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
摘要:当这些错误发生时,数据就无法访问了,并且一直永久的无法访问。错误可能意味着表定义中字段的数量和大小超过了一些限制。添加外键错误,检查外键关联的两个字段数据类型是否一致。 Error code 1064: Syntax error 假设有一个sql语句 select LastName, FirstName,from Person 执行的时候会包错误 Error Code: 1064. ...
摘要:实体关系映射建了四个实体,启动程序。打开数据库,发现只生成了三张表。与都创建成功,只有表创建失败。同时,控制台也报出了如下错误大致意思就是你的表中有一个语法错误,导致了创建表失败。原因猜测应该是属于中的关键字,所以会报语法错误。 实体关系映射 建了四个实体,启动程序。 showImg(https://segmentfault.com/img/bVbbJyY?w=410&h=188); ...
摘要:实体关系映射建了四个实体,启动程序。打开数据库,发现只生成了三张表。与都创建成功,只有表创建失败。同时,控制台也报出了如下错误大致意思就是你的表中有一个语法错误,导致了创建表失败。原因猜测应该是属于中的关键字,所以会报语法错误。 实体关系映射 建了四个实体,启动程序。 showImg(https://segmentfault.com/img/bVbbJyY?w=410&h=188); ...
摘要:不仅如此,如果一个的预处理语句过多,可能会达到的上限值。预处理语句只能在创建者的会话中可以使用,其他会话是无法使用的。而且在任意方式正常或非正常退出会话时,之前定义好的预处理语句将不复存在。 原文地址:MySQL预处理语句prepare、execute、deallocate的使用 语法 PREPARE stmt_name FROM preparable_stmt EXECUTE st...
摘要:错误实例完整错误原因中多了一个逗号执行结构有大小限制,会根据大小进行截取参考手册 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...
阅读 2512·2021-09-04 16:45
阅读 2001·2019-08-30 15:54
阅读 1815·2019-08-30 13:49
阅读 541·2019-08-29 18:44
阅读 706·2019-08-29 18:39
阅读 891·2019-08-29 15:40
阅读 1408·2019-08-29 12:56
阅读 2933·2019-08-26 11:39