2010-09-22 38 views
18

我有一個mysql數據庫,我從我的在線服務器上下載並試圖導入我的本地mysql,但它不工作,顯示此語法錯誤。我無法找到在此查詢MySQL錯誤使用BTREE

任何錯誤,這是錯誤:

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 idx_p_id (p_id) USING BTREE, KEY ' at line 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

只要刪除'USING BTREE',除非您在此字段上使用LIKE語句,它將恢復爲默認散列索引 – 2015-06-26 11:48:05

回答

26

你的MySQL服務器版本是舊的,並與一個地方不兼容轉儲已創建。 嘗試升級您的mysql服務器或使用mysqldump的--compatible選項導出轉儲。

你可能需要這樣:

mysqldump --compatible=mysql40 ... 

您還可以導入轉儲,你可以在本地有使用comopatible選項來創建和再出口較新服務器的選項。

我也看到有人在他們的mysql轉儲文件中搜索和替換東西,但這是一種醜陋的方法,但如果您剛剛遇到這種不兼容問題,可能會對您有用。

也會格式化您的文本並接受一些答案,如果您希望人們來幫助您。

6

在版本我使用(5.0.51a),USING BTREE支持。但是,語法稍有不同:至少在CREATE TABLE語句中,USING BTREE部分必須位於索引名稱和其列之間;例如

​​3210

雖然5.0手冊說index_type可能會列定義後之前,後者是不能接受的。

我無法對版本5.1中的行爲進行任何說明。

1

在版本5.1X中,您可以使用BTREE,但在舊版本中是不可能的。使用BTREE在舊版本一樣5.0X你應該只設置索引和它不具有任何option.watch here

你可以看到什麼是在以下版本5.0X:

MyISAM   =>   BTREE 

InnoDB   =>   BTREE 

MEMORY/HEAP =>   HASH, BTREE 

NDB   =>   BTREE, HASH 
1

的原因錯誤是數據庫的不同版本。 MySQL的5.0和MySQL之間 差分5.1

的MySQL 5.0 - > KEY idx_p_idp_id)USING BTREE,

的MySQL 5。1 - > KEY idx_p_id使用BTREE(p_id),

+0

mysql 5.0和mysql 5.1放錯了順序。請糾正它。 – maxmas 2016-06-29 02:15:49