我使用 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”插入到表中来简单地尝试一下。但这并不是一个全面的测试——我对这个建议在所有情况下都有效不承担任何责任。
| 归档时间: |
|
| 查看次数: |
13869 次 |
| 最近记录: |