mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near 'USING BTREE

转自:http://hi.baidu.com/our_poll/item/669c5ce885b33ff1e0a5d4fc

我本机测试是安装的 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发现原来是mysql 5.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)