diff --git a/src/Command/Pull/PullCommandBase.php b/src/Command/Pull/PullCommandBase.php index 68be46444..df78d43d2 100644 --- a/src/Command/Pull/PullCommandBase.php +++ b/src/Command/Pull/PullCommandBase.php @@ -486,10 +486,10 @@ private function importDatabaseDump(string $localDumpFilepath, string $dbHost, s 'mysql', ]); if ($this->localMachineHelper->commandExists('pv')) { - $command = 'pv "${:LOCAL_DUMP_FILEPATH}" --bytes --rate | gunzip | MYSQL_PWD="${:MYSQL_PASSWORD}" mysql --host="${:MYSQL_HOST}" --user="${:MYSQL_USER}" "${:MYSQL_DATABASE}"'; + $command = 'bash -c "set -o pipefail; pv \"${:LOCAL_DUMP_FILEPATH}\" --bytes --rate | gunzip | MYSQL_PWD=\"${:MYSQL_PASSWORD}\" mysql --host=\"${:MYSQL_HOST}\" --user=\"${:MYSQL_USER}\" \"${:MYSQL_DATABASE}\""'; } else { $this->io->warning('Install `pv` to see progress bar'); - $command = 'gunzip -c "${:LOCAL_DUMP_FILEPATH}" | MYSQL_PWD="${:MYSQL_PASSWORD}" mysql --host="${:MYSQL_HOST}" --user="${:MYSQL_USER}" "${:MYSQL_DATABASE}"'; + $command = 'bash -c "set -o pipefail; gunzip -c \"${:LOCAL_DUMP_FILEPATH}\" | MYSQL_PWD=\"${:MYSQL_PASSWORD}\" mysql --host=\"${:MYSQL_HOST}\" --user=\"${:MYSQL_USER}\" \"${:MYSQL_DATABASE}\""'; } $env = [ diff --git a/tests/phpunit/src/Commands/Pull/PullCommandTestBase.php b/tests/phpunit/src/Commands/Pull/PullCommandTestBase.php index 89739d341..512b57493 100644 --- a/tests/phpunit/src/Commands/Pull/PullCommandTestBase.php +++ b/tests/phpunit/src/Commands/Pull/PullCommandTestBase.php @@ -310,7 +310,9 @@ protected function mockExecuteMySqlImport( $this->mockExecutePvExists($localMachineHelper, $pvExists); $process = $this->mockProcess($success); $filePath = Path::join(sys_get_temp_dir(), "$env-$dbName-$dbMachineName-$createdAt.sql.gz"); - $command = $pvExists ? 'pv "${:LOCAL_DUMP_FILEPATH}" --bytes --rate | gunzip | MYSQL_PWD="${:MYSQL_PASSWORD}" mysql --host="${:MYSQL_HOST}" --user="${:MYSQL_USER}" "${:MYSQL_DATABASE}"' : 'gunzip -c "${:LOCAL_DUMP_FILEPATH}" | MYSQL_PWD="${:MYSQL_PASSWORD}" mysql --host="${:MYSQL_HOST}" --user="${:MYSQL_USER}" "${:MYSQL_DATABASE}"'; + $command = $pvExists + ? 'bash -c "set -o pipefail; pv \"${:LOCAL_DUMP_FILEPATH}\" --bytes --rate | gunzip | MYSQL_PWD=\"${:MYSQL_PASSWORD}\" mysql --host=\"${:MYSQL_HOST}\" --user=\"${:MYSQL_USER}\" \"${:MYSQL_DATABASE}\""' + : 'bash -c "set -o pipefail; gunzip -c \"${:LOCAL_DUMP_FILEPATH}\" | MYSQL_PWD=\"${:MYSQL_PASSWORD}\" mysql --host=\"${:MYSQL_HOST}\" --user=\"${:MYSQL_USER}\" \"${:MYSQL_DATABASE}\""'; $expectedEnv = [ 'LOCAL_DUMP_FILEPATH' => $filePath, 'MYSQL_DATABASE' => $localDbName,