导入mysqldump生成的mysql过程--routines

时间:2009-02-02 19:09:58

标签: mysql stored-procedures mysqldump

我使用mysqldump工具制作数据库的副本。问题是,当我使用--routines参数输出我的存储过程以及我的数据时,生成的输出在我尝试导入时会导致错误。

它是这样的:

% 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

如果省略--routines,那么一切正常。

还有其他人遇到过这个吗?

2 个答案:

答案 0 :(得分:3)

我能够通过将其分成两个调用来实现这一点:

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

答案 1 :(得分:3)

如果在MyDB2中运行查询时出现错误,最好:

  1. 运行mysqldump将输出保存到已保存的文件中。
  2. 逐位运行文件,以确定哪个部分有问题。
  3. 修复那个位。
  4. 我曾经遇到过这样的问题,我从一个旧版本的mysql导出并导入到一个更新的版本,它已经声明我的一个列名称是一个保留字。你的两个数据库在不同的服务器上运行不同版本的mysql吗?或者数据库之间是否存在其他差异(例如字符集)?