萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Dedecms 匯入數據庫報錯 USING BTREE 語法問題解決方案

今天在使用網格空間匯入 Dedecms 資料庫時,前 63 個資料表都能順利匯入,但後面幾十個表卻失敗了,報錯提示 USING BTREE) ENGINE=MyISAM DEFAULT CHARSET=utf8 at line 7。這個錯誤讓我一頭霧水,經過搜尋和測試,終於找到了解決辦法,現分享給大家參考。

錯誤現場重現

匯入時的具體 SQL 錯誤如下:

-- --------------------------------------------------------
--
-- 資料表結構 `xjz_purview`
--
CREATE TABLE IF NOT EXISTS `xjz_purview` (
  `mid` MEDIUMINT(8) DEFAULT '0',
  `typeid` SMALLINT(5) DEFAULT '0',
  `rank` SMALLINT(6) DEFAULT NULL,
  `pkey` VARCHAR(30) CHARACTER SET latin1 NOT NULL,
  `pvalue` TEXT NOT NULL,
  KEY `pkey` (`pkey`) USING BTREE
) ENGINE = MYISAM DEFAULT CHARSET = utf8;

MySQL 返回錯誤:

#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 ) ENGINE=MyISAM DEFAULT CHARSET=utf8' at line 7

問題分析與解決

網上查資料發現,問題出在 KEY `pkey` (`pkey`) USING BTREE 這行語法上。我用記事本打開 SQL 檔案搜尋卻找不到,後來改用 Dreamweaver 才搜尋到這行代碼。直接刪除 USING 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 ') ENGINE=MyISAM DEFAULT CHARSET=utf8' at line 7

進一步查詢發現,TYPE=MyISAM 和 ENGINE=MyISAM 都是設定資料庫儲存引擎的語句。舊版本 MySQL 使用 TYPE 而非 ENGINE(例如 TYPE = MYISAM)。MySQL 5.1 為向下相容支援這個語法,但 TYPE 現在已被棄用,ENGINE 是首選用法。一般情況下,ENGINE 選項並非必要;除非預設已被更改,MyISAM 是預設儲存引擎。

我的資料庫版本是 MySQL 5.5.8,將 SQL 檔案中的 TYPE 全部改為 ENGINE 後,匯入終於成功了。

總結

  • MySQL 5.5+ 版本不支援 USING BTREE 索引語法,需移除
  • 舊版 SQL 檔案中的 TYPE=MyISAM 應改為 ENGINE=MyISAM
  • 建議使用專業編輯器(如 Dreamweaver、Notepad++)進行全域搜尋替換

希望這篇筆記能幫到遇到同樣問題的朋友。

copyright © 萬盛學電腦網 all rights reserved