mysqldump 没有正确转义单引号

6 mysql mysqldump

我使用 mysqldump 来备份我的 mysql 数据库。问题是 mysqldump 生成的 sql 文件没有正确转义单引号。

以下是 mysqldump 生成的 sql 脚本的示例:

INSERT INTO `someTable` VALUES (1,'This ain\'t escaped correctly');
Run Code Online (Sandbox Code Playgroud)

在“ain't”中转义的单引号不起作用,它使脚本的其余部分位于该字符串内。有没有解决的办法?

Bil*_*win 12

mysqldump 的输出按设计工作,并且它被正确转义,除非您尝试使用SQL_MODE=NO_BACKSLASH_ESCAPESset在 MySQL 实例上恢复转储。

根据 ANSI SQL,有一个突出的功能要求使 mysqldump 使用一对单引号来转义文字单引号。见http://bugs.mysql.com/bug.php?id=65941

同时,您可以使用以下命令行将反斜杠单引号转换为单引号对:

mysqldump test | sed -e "s/\\\'/''/g" > test-dump.sql
Run Code Online (Sandbox Code Playgroud)

我通过在我的test数据库中创建一个虚拟表并将字符串“O'Hare”插入到表中来简单地尝试一下。但这并不是一个全面的测试——我对这个建议在所有情况下都有效不承担任何责任。