2012-09-14 56 views
1

我有MySQL數據庫版本5.1.36,隨WAMP安裝。我在Windows XP SP3上將它用於開發目的,並且它有一些數據,它是西里爾文,並且所有這些表/列的排序規則設置爲utf8_general_ciMySQL UTF8 Windows導出 - Linux導入

現在是時候把這個數據庫遷移到Debian Lenny上的僞生產環境了。這裏的MySQL版本是5.0.51a。

我試過如下:

  1. 我導出的數據DATABSE從的phpmyadmin在Windows和保存在.sql文件是UTF8。
  2. 然後,我通過WinSCP將它傳遞給Linux機器(包括默認和二進制傳輸設置)。
  3. 我通過命令行創建的數據庫:mysqladmin -u root -p create nbs
  4. 最後,我試圖創建表並填寫數據:

    mysql -u root -p --default-character-set=utf8 nbs < NBS_utf8_1.sql

然而,這就是我得到的錯誤,如:

錯誤1064(42000)在行1:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法附近使用手冊「我»¿ CREATE TABLE IF NOT EXISTS `history_members` ( `id` INT(11)NOT NULL AUTO_」在行1把

事情搞砸了編碼,我想......但不知道如何以及在哪裏。我想我在SO上讀到類似的問題,即文本傳輸的二進制模式只會將換行符CRLF更改爲LF(不知道這是否正確...)。我在這裏錯過了什麼?

謝謝。

+0

但看來轉儲文件包含了一些多餘的字符。這是一個文本文件,所以二進制模式不應該用於上傳。 –

+0

是的,當我在PuTTY控制檯中用'more'顯示它時,首先看到的就是'胡扯。我不知道它是如何到達那裏的,但是當我用文本模式轉移它時,它消失了。 – Less

+0

但是,這並沒有解決問題,因爲編碼再次搞砸了...... – Less

回答

3

對於這個特定的情況下,該問題得到解決並作以下修改:

1)I設置初始覈對在創建目標數據庫utf8_general_ci
2)I轉移與文本模式中的文件通過WinSCP賦予,
3)我將SET NAMES 'utf8' COLLATE 'utf8_general_ci';添加到sql轉儲的頂部。