diff --git a/lib/backup.ts b/lib/backup.ts index 104bcc6..937093b 100644 --- a/lib/backup.ts +++ b/lib/backup.ts @@ -33,6 +33,7 @@ async function runBackup(): Promise { const dump = spawn(dumpBin, [ `-h${dbHost}`, `-P${dbPort}`, `-u${dbUser}`, '--skip-ssl', + '--default-auth=mysql_native_password', `--ignore-table=${dbName}.beos`, dbName, ], { env: { ...process.env, MYSQL_PWD: dbPass } }); @@ -44,13 +45,21 @@ async function runBackup(): Promise { gzip.stdout.pipe(file); let dumpErr = ''; + let dumpCode: number | null = null; dump.stderr.on('data', (d: Buffer) => { dumpErr += d.toString(); }); dump.on('error', reject); gzip.on('error', reject); file.on('error', reject); + dump.on('close', (code) => { + dumpCode = code; + if (code !== 0) gzip.stdin.end(); + }); file.on('close', () => { - if (dumpErr.trim()) console.log('[backup] dump stderr:', dumpErr.trim()); - resolve(); + if (dumpCode !== 0) { + reject(new Error(`${dumpBin} exit ${dumpCode}: ${dumpErr.trim()}`)); + } else { + resolve(); + } }); });