MySQL错误使用BTREE

时间:2010-09-22 09:06:39

标签: mysql

我有一个mysql数据库,我从我的在线服务器上下载并尝试导入我的本地mysql,但它无法正常显示此语法错误。我在此查询中找不到任何错误

这是错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'USING BTREE附近使用正确的语法,     KEY idx_p_idp_id)使用BTREE,     KEY'第27行

这是我的疑问:

  PRIMARY KEY (`a_id`),
  UNIQUE KEY `idx_a_id` (`a_id`) USING BTREE,
  KEY `idx_p_id` (`p_id`) USING BTREE,
  KEY `idx_m_id` (`m_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

6 个答案:

答案 0 :(得分:26)

您的mysql服务器版本较旧,与创建转储的版本不兼容。 尝试使用mysqldump的--compatible选项升级mysql服务器或导出转储。

你可能需要这个:

mysqldump --compatible=mysql40 ...

您还可以选择将转储导入到可以在本地创建的新服务器,并使用comopatible选项在那里重新导出。

我也看到人们在他们的mysql转储文件中搜索和替换东西,但这是一种丑陋的方法,但如果你只有这种不兼容性,可能对你有用。

如果您希望别人帮助您,还可以格式化您的文字并接受一些答案。

答案 1 :(得分:6)

在我使用的版本(5.0.51a)中,支持USING BTREE 。但是,语法略有不同:至少在CREATE TABLE语句中,USING BTREE部分必须位于索引名称及其列之间; e.g。

  

INDEX ind使用BTREE(col1,col2)

虽然5.0手册说index_type可能在列定义之后之前,但不接受后者。

我无法对版本5.1中的行为说些什么。

答案 2 :(得分:3)

答案 3 :(得分:1)

您的问题似乎可能是以下链接中提到的MYSQL错误造成的。

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

答案 4 :(得分:1)

在版本5.1X中,您可以使用BTREE,但在旧版本中,它是不可能的。要在像5.0x这样的旧版本中使用BTREE,你应该只设置索引,它没有任何选项.watch here

您可以在下面看到5.0x版本中的内容:

MyISAM          =>            BTREE

InnoDB          =>            BTREE

MEMORY/HEAP =>            HASH, BTREE

NDB         =>            BTREE, HASH

答案 5 :(得分:1)

错误的原因是数据库的版本不同。 mysql 5.0和mysql 5.1之间的区别

mysql 5.0 - > KEY idx_p_idp_id)使用BTREE,

mysql 5.1 - > KEY idx_p_id使用BTREE(p_id),