2014-02-13 29 views
9

無法導入由mysqldump.exe在Windows雖然在行導入mysqldump的文件錯誤1064(42000)近「■/」 1

/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `attachment_types` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `DESCRIPTION` varchar(50) DEFAULT NULL, 
    `COMMENTS` varchar(256) DEFAULT NULL, 
    PRIMARY KEY (`ID`), 
    UNIQUE KEY `UK_ATTACHMENT_TYPES___DESCRIPTION` (`DESCRIPTION`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 

在導入在命令行中的文件的命令行創建以下轉儲文件

mysql --user=root --password=root < mysqldumpfile.sql 

它拋出錯誤

ERROR 1064 (42000) near ' ■/ ' at line 1 

有人請幫助我。

+1

你嘗試改變你的字符集?也許使用UTF8_general_ci – marcosh

+0

@marcosh謝謝你指出我。我找到了解決方案。參考我的答案。 –

回答

20

最後我得到了一個解決方案

我們需要兩個選項

  • --default-character-set=utf8:這確保UTF8用於每個 字段
  • --result-file=file.sql:此選項防止使通過它有可能不使用 UTF8操作系統轉儲數據 。而是將轉儲數據直接傳遞到指定的文件 。

使用這些新的選擇轉儲命令會是這樣的:

mysqldump -u root -p --default-character-set=utf8 --result-file=database1.backup.sql database1 

在導入時可以選擇使用:

mysql --user=root --password=root --default_character_set utf8 < database1.backup.sql 

來源:http://nathan.rambeck.org/blog/1-preventing-encoding-issues-mysqldump

+1

感謝這個Pavan,幫助將轉儲文件從Windows遷移到Linux。 –

+1

這完全解決了我的問題。非常感謝你! – ackratos

3

看來,輸入文件(mysqldumpfile.sql)在UTF-8編碼創建等等這些前3個字節「第1行」看不見你的.SQL文件是byte order mark (BOM) sequence

所以儘量change default character set to UTF-8

mysql --user=root --password=root --default_character_set utf8 < mysqldumpfile.sql 
+0

感謝您的評論。它幫助我找到解決方案:) –

+0

嗨valex,當我輸入這個命令時,它說沒有選擇數據庫。 –

2

這是導入命令我需要在窗口上

mysql --user=root --password=root --default_character_set utf8 database2 < database1.backup.sql

所需的數據庫導入到