perl中的mysqldump - 返回值为allways 0

arn*_*nie 0 mysql backup ubuntu perl mysqldump

当我在perl中执行以下操作时,我总是得到错误代码"0".即使例如mysql数据库不存在,或密码错误等.

@args = ("mysqldump -u root -ppassword database1 | gzip -c > /usr/local/bin/database.gzip");
system(@args) == 0
        or die "Command failed: @args \nError Code: $? \n";
Run Code Online (Sandbox Code Playgroud)

我的目标是捕获mysqldump命令的任何错误,因此我可以确保备份是否成功.

noh*_*hup 5

我想这是给出这个问题的管道.您可能正在获得退出状态

"gzip -c > /usr/local/bin/database.gzip" 
Run Code Online (Sandbox Code Playgroud)

您可能必须将dump和gzip部分拆分为两部分.

使用

`mysqldump -u root -ppassword database1 > ./dump.txt`;
if ($? == 0){
    `gzip -9 ./dump.txt`;
    }
else{
die "errored";
}
Run Code Online (Sandbox Code Playgroud)