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
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.1 到 mysql 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.1和mysql 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 |
相关文章推荐
- mysql 5.0 to mysql 5.1的BTREE索引问题
- mysql 5.0 to mysql 5.1的BTREE索引问题
- mysql 5.0 to mysql 5.1的BTREE索引问题
- mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near \'USING BTREE,
- mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near 'USING BTREE
- Mysql问题:Connector/Net no longer supports server versions prior to 5.0
- Mysql问题:Connector/Net no longer supports server versions prior to 5.0
- MySQL从5.0升级到5.1注意的问题
- Oracle 安装遇到的问题:正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一..
- 如何解决远程连接mysql出现Can’t connect to MySQL server on (111 “Connection refused”)的问题
- MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别
- MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
- Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)的解决问题
- mysql 组合索引的顺序问题
- MySQL的btree索引和hash索引的区别
- mysql关于or的索引问题
- windows下用Python连接mysql报错问题“MySQLdb in Python: “Can't connect to MySQL server on 'localhost'””
- mysql索引覆盖之innodb和myisam效率问题
- Mysql5.0中文乱码问题
- MySQL的btree索引和hash索引的区别