MySQL错误使用BTREE

r14*_*304 18 mysql

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

这是错误:

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

这是我的疑问:

  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;
Run Code Online (Sandbox Code Playgroud)

The*_*can 26

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

你可能需要这个:

mysqldump --compatible=mysql40 ...
Run Code Online (Sandbox Code Playgroud)

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

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

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


two*_*eys 6

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

INDEX ind使用BTREE(col1,col2)

尽管5.0手册说明index_type可能在列定义之前之后,但后者不被接受.

我不能说5.1版本中的行为.