ddev import-db/ddev pull导入数据库报错:Unknown command '\-'等问题求助
解决DDEV导入新版MariaDB备份文件的错误问题
问题原因
你遇到的两个错误都源于新版本mariadb-backup/mysqldump生成的压缩SQL备份文件格式特性:
ERROR at line 1: Unknown command '\-':直接传递.gz压缩文件给ddev import-db时,工具未正确解压就交给MySQL,导致MySQL误把压缩二进制内容当成SQL命令解析。ERROR: ASCII '\0' appeared in the statement:用管道直接导入压缩文件时,二进制压缩包中的null字符被MySQL读取,而默认模式下MySQL不允许这类字符。
解决方案
方法1:先解压再导入
手动解压压缩文件后再执行导入命令:
# 解压.gz文件 gunzip database.sql.gz # 导入解压后的SQL文件 ddev import-db --file=database.sql
方法2:管道解压+启用二进制模式导入
通过管道实时解压,并给MySQL添加--binary-mode=1参数来兼容备份中的特殊字符:
gunzip < database.sql.gz | ddev exec mysql -u db -pdb --binary-mode=1 db
处理ddev pull platform的问题
由于ddev pull platform内部使用相同的导入逻辑,你可以:
- 拉取备份后,找到下载的压缩备份文件(通常在
.ddev/.downloads目录下),用上述方法1或2手动导入; - 自定义
ddev pull的钩子,在导入前自动解压并添加二进制模式参数。例如在.ddev/config.yaml中添加:hooks: post-pull: - exec: "gunzip < .ddev/.downloads/platform.sql.gz | mysql -u db -pdb --binary-mode=1 db"
内容的提问来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

