當使用SQLyog匯出dedecms的資料庫為xxx.sql檔案時,會報幾個錯誤:
錯誤1064年線上21 : 您有一個錯誤在您的SQL句法。 檢查手工t帽子對應於您的MySQL伺服器版本為正確的句法,用途近‘DEFAULT CHARSET=utf8線上
第一是,USING BTREE 錯誤。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,UNIQUE KEY `pkey` (`pkey`) USING BTREE 。。。
解決辦法:
| 代碼如下 |
複製代碼 |
UNIQUE KEY `pkey` (“pkey“) USING BTREE ,修改為 UNIQUE KEY `pkey` USING BTREE (“pkey“) , |
即把USING BTREE 放到索引欄位前面即可.
第二、dedecms的一些欄位跟mysql系統保留欄位衝突,而SQLyog匯出的資料sql檔案的sql語句insert中的欄位有沒有加符號“`”,所以會衝突。
在phpmyadmin內選擇某個資料庫,瀏覽其table列表,可以看到table的collation(整理)資訊。例如A資料庫table的collation資訊為gbk_chinese_ci,那麼在匯出資料庫成sql指令碼前,在phpmyadmin首頁language(語言)一欄選擇“中文-Chinese simplified”,千萬不要選擇“中文-Chinese simplified-gb2312”,否則匯出的sql檔案中中文會出現亂碼現象。這句話絕對是關鍵,我就是按照這樣做的然後就OK了。
同理,table的collation資訊為gb2312_chinese_ci,那麼在匯出資料庫成sql指令碼前,在phpmyadmin首頁 language(語言)一欄選擇“中文-Chinese simplified-gb2312”,這樣匯出的sql指令碼中文不會出現亂碼。
當匯入上述匯出的sql指令碼時,進入phpmyadmin首頁,能夠看到“MySQL 字元集”資訊,例如“UTF-8 Unicode (utf8)”,那麼在匯入上述匯出的sql指令碼時,“檔案的字元集”選擇“utf8”。
如果是dedecms可直接使用dededms直接資料匯入匯出