我有一个mysql数据库,我从我的在线服务器上下载并尝试导入我的本地mysql,但它无法正常显示此语法错误。我在此查询中找不到任何错误
这是错误:
1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'USING BTREE附近使用正确的语法, KEY
idx_p_id
(p_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;
答案 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错误造成的。
答案 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_id
(p_id
)使用BTREE,
mysql 5.1 - > KEY idx_p_id
使用BTREE(p_id
),