MySQL mysqldump命令错误(mysql 5.5中的错误)

时间:2014-02-12 12:30:38

标签: mysql sql database mysqldump

我正在从我的服务器数据库导出一个表,这个表大约有几千行而且PHPMyadmin无法处理它。所以我切换到命令行选项
但是在执行mysqldump命令后,我遇到了这个错误。错误是

Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': 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 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
在对同一个搜索进行了一些搜索后,我在mysql 5.5版本中发现它为bug,不支持SET OPTION命令。

我正在运行带有centos的EC2实例。我的mysql版本是5.5.31(来自我的phpinfo)。
我想知道是否有解决方法,因为无法为此错误升级整个数据库
或者,如果有任何其他替代方法进行出口或转储,请建议。

3 个答案:

答案 0 :(得分:1)

未经过测试,但是这样:

cat yourdumpfile.sql | grep -v "SET OPTION SQL_QUOTE_SHOW_CREATE" | mysql -u user -p -h host databasename

这会将转储插入数据库,但会删除包含“SET OPTION SQL_QUOTE_SHOW_CREATE”的行。 -v表示还原。

找不到SQL_QUOTE_SHOW_CREATE的英文手册条目来链接它,但是当你的表和数据库名称不包含特殊字符或其他东西时(根本不需要),你根本不需要这个选项加入引号。

更新:

mysqldump -u user -p -h host database | grep -v "SET OPTION SQL_QUOTE_SHOW_CREATE" > yourdumpfile.sql

然后,当您将转储插入数据库时​​,您不必做任何特别的事情。

mysql -u user -p -h host database < yourdumpfile.sql

答案 1 :(得分:1)

mysqldump的替代方法是SELECT的SELECT ... INTO形式,它允许将结果写入文件(http://dev.mysql.com/doc/refman/5.5/en/select-into.html)。

上述帮助页面中的一些示例语法是:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

然后可以使用LOAD DATA INFILE(http://dev.mysql.com/doc/refman/5.5/en/load-data.html)加载数据。

页面再次给出了一个例子:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test
FIELDS TERMINATED BY ','  LINES STARTING BY 'xxx';

有一个完整的工作示例对:

  

当您使用SELECT ... INTO OUTFILE与LOAD DATA INFILE一起使用时   将数据从数据库写入文件,然后读回文件   稍后进入数据库,两者的字段和行处理选项   陈述必须匹配。否则,LOAD DATA INFILE将不会解释   正确的文件内容。假设您使用SELECT ...   INTO OUTFILE用于编写带逗号分隔的字段的文件:

SELECT * INTO OUTFILE 'data.txt'   FIELDS TERMINATED BY ','   
FROM table2;
     

要重新读取逗号分隔的文件,将使用正确的语句   是:

 LOAD DATA INFILE 'data.txt' INTO TABLE table2   FIELDS TERMINATED BY ',';

答案 2 :(得分:0)

我使用了快速而肮脏的黑客。

  1. 下载mysql 5.6。 (来自https://downloads.mariadb.com/archive/signature/p/mysql/f/mysql-5.6.13-linux-glibc2.5-x86_64.tar.gz/v/5.6.13
  2. 解开并使用新下载的mysqldump。