2009-02-02 37 views
5

我使用mysqldump工具來製作我的數據庫的副本。問題是,當我使用--routines參數輸出我的存儲過程和我的數據時,生成的輸出會導致錯誤,當我嘗試導入它時。導入從mysqldump生成的mysql程序 - 例程

它是這樣的:

% mysqldump --routines MyDB | mysql MyDB2 

(其中MYDB2已經存在,但是是空的)

我得到的錯誤是:

ERROR 1064 (42000) at line 307: 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 '' at line 23 

一切正常,如果我省略 - 例程。

有沒有其他人遇到過這個?

+1

什麼是目標MySQL服務器的版本?它支持存儲的例程嗎?你可以展示劇本,還是隻是307行附近的一部分? – Devart 2012-05-28 07:10:29

回答

3

我能得到這個通過拆分它的工作分爲兩個呼叫:

% mysqldump MyDB | mysql MyDB2 
% mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt MyDB | mysql MyDB2 
+0

我有類似的問題,我有一個Linux數據庫,我正在移動到Windows,我有所有類型的錯誤 - 例程 – 2012-05-20 23:49:01

3

如果某樣東西的示數運行在MYDB2的查詢時,這是最好的:

  1. 運行mysqldump的保存輸出到一個保存的文件。
  2. 逐位運行文件,以確定哪個部分存在問題。
  3. 修復這一點。

我曾經有過這樣的問題,我從一個老版本的mysql中導出並導入到一個更新的版本中,該新版本聲明瞭我的列名中的一個保留字。你的兩個數據庫在不同的服務器上運行不同版本的mysql嗎?或者數據庫之間還有一些其他區別(例如字符集)?