2011-12-05 90 views
0

我已經從MySQl Workbench導入了一個轉儲的sql文件,但是當我嘗試在Eclipse中運行時,我一直收到此錯誤消息。將sql dump導入到Eclipse

SQLException:您的SQL語法有錯誤;請檢查與您的MySQL服務器版本對應的手冊,以便在'SET @OLD_CHARACTER_SET_RESULTS = @@ CHARACTER_SET_RESULTS /; /!40101 SET @OLD_COL'at line 8

但是,當我將相同的信息複製到MySQL中時,它會創建模式並且一切正常。我究竟做錯了什麼?

這裏是我的Java代碼: http://pastebin.com/B1RVMYUd

如果你需要在這裏是轉儲文件: http://pastebin.com/RWpG0BEX

回答

0

嗨也許更好上傳查詢傾倒在你的MySQL聲明

0

你執行轉儲的全部內容作爲單個SQL語句。嘗試使用;作爲分隔符分割文件內容(您的sql字符串),並分別執行每個語句。

(順便說一句,這是很好的做法,把呼叫statement.close/conn.closefinally條款,以確保資源始終會釋放。)

0

我是個初學者,所以我的意見可能不是最清晰或最準確的,也不是我的代碼最清晰,最簡潔,最正確等等。有了這個,這裏有幾件事:

1)你不能使用executeQuery(sql)方法創造。所以使用其他選項之一。在我的實驗,我用:

sqlDumpArray = sqlDump.split(";"); 

for (int i = 0; i < sqlDumpArray.length; i++) { 
    System.out.println("\nsqlDumpArray[" + i + "] is: " + sqlDumpArray[i]); // To see what's in the array. 
    } 

    for (int j = 1; j < sqlDumpArray.length -1; j++) { // Ugly hack because sqlDumpArray[0] and sqlDumpArray.length-1 are problematic in this alpha version of code. 
     try { 
      Statement statement = conn.createStatement(); 
      statement.addBatch(sqlDumpArray[j]);    
      statement.executeBatch(); // Maybe could move this out of the for-loop. 
     } 

關於SQL文件:

1)剝離出的意見。 2)將分號作爲文件的第一個字符(即第1行,第1列)。

我做到了,它的工作原理。讓我知道如果你想我的完整代碼,我會發布它。

乾杯, Chris