我正在从我的服务器数据库中导出大约几千行的表,而 PHPMyadmin 无法处理它。所以我切换到命令行选项
但是我在执行mysqldump
命令后遇到了这个错误。错误是
无法执行“SET OPTION SQL_QUOTE_SHOW_CREATE=1”:您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行 (1064) 的“OPTION SQL_QUOTE_SHOW_CREATE=1”附近使用的正确语法
在对相同的内容进行一些搜索后,我发现这是一个 bug在 mysql 5.5 版本中不支持 SET OPTION
命令。
我正在运行一个带有 centos 的 EC2 实例。我的 mysql 版本是 5.5.31
(来 self 的 phpinfo)。
我想知道是否有解决此问题的方法,因为无法针对此错误升级整个数据库。
或者,如果有任何其他替代方法可以进行导出或转储,请提出建议。
最佳答案
mysqldump 的替代方法是 SELECT ... INTO 形式的 SELECT,它允许将结果写入文件 (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';
还有一个完整的示例对:
When you use SELECT ... INTO OUTFILE in tandem with LOAD DATA INFILE to write data from a database into a file and then read the file back into the database later, the field- and line-handling options for both statements must match. Otherwise, LOAD DATA INFILE will not interpret the contents of the file properly. Suppose that you use SELECT ... INTO OUTFILE to write a file with fields delimited by commas:
SELECT * INTO OUTFILE 'data.txt' FIELDS TERMINATED BY ',' FROM table2;
To read the comma-delimited file back in, the correct statement would be:
LOAD DATA INFILE 'data.txt' INTO TABLE table2 FIELDS TERMINATED BY ',';
关于MySQL mysqldump 命令错误(mysql 5.5 中的错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728031/