您的位置:首页 > 数据库 > MySQL

mysql 5.0 to mysql 5.1的BTREE索引问题

2011-05-25 19:04 495 查看
今天遇到一个问题就是在搞magento站的时候复制站后导好库出现数据库里面sql语句报错,经查看是mysql版本问题从mysql 5.1 to mysql 5.0上出现索引表的问题向下面的把导出来的数据库sql语句顺序给修改下即可。
B-tree索引是数据库中存取和查找文件(称为记录或键值)的一种方法。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。
一个B-tree的典型例子就是硬盘中的结点。与内存相比,硬盘必须花成倍的时间来存取一个数据元素,这是因为硬盘的机械部件读写数据的速度远远赶不上纯 电子媒体的内存。与一个结点两个分支的二元树相比,B-tree利用多个分支(称为子树)的结点,减少获取记录时所经历的结点数,从而达到节省存取时间的 目的。
下面语句是在 mysql 5.1 导出的:
KEY `index_2` (`datatype`,`stime`,`line`,`mcode`) USING BTREE
如果想导入到 mysql 5.0 则调整 USING BTREE 这类指定索引类型语句的位置到中间, 为:
KEY `index_2` USING BTREE (`datatype`,`stime`,`line`,`mcode`)

LionCode 注:
巧记法,5.0与5.1相比,5.0小,USING BTREE在前;5.1大,USING BTREE在后。
数小的在前,数大的在后!

本文出自 “Linux生涯” 博客,请务必保留此出处http://lvzili.blog.51cto.com/1995527/564260

mysql 5.1mysql 5.0出现索引BTREE问题 use near 'USING BTREE

我本机测试是安装 mysql 5.1 , 但服务器上确是使用 mysql 5.0 , 平时没发现差别, 今天从本地数据库5.1到入到5.0时sql 文件导入导出时发现了错误,
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 `CategoryID` (`GlobalDisplayOrder`) USING BTREE,
KEY `Gl' at line 15
后来分析发现,导入时在没有建 UNIQUE KEY 表是能导入成功,建了UNIQUE KEY 表导入时就会出现上面这样错误,仔细对比了下SQL发现原来是mysql5.1mysql 5.0一点小小差别.主要是在处理到索引语句时出现了不兼容情况, 比如下面语句是在 mysql 5.1 导出:
KEY `index_2` (`CategoryID`) USING BTREE
如果想导入到 mysql 5.0 则调整 USING BTREE 这类指定索引类型语句位置到中间, 为:
KEY `index_2` USING BTREE (`CategoryID`)
而在没有UNIQUE KEY 表时,导出是是没有USING BTREE这样定义说明;
知道原因解决方法就很多了,如:可以,先把UNIQUE KEY 改成普通索引,导好后再改回来,用这个方法时要注意是,改索引类型时最好把索引名也改下,不然,有缓存,只改下索引类型导时还是会出错,改索引名是,就会重建,再导就OK了!
后来发现myql官方上也有这样bugs问题说明!大家可以查看更多详情

http://bugs.mysql.com/bug.php?id=25162

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: