From 93b449412f7a5b13e58c4091aca084fbde52294f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Fri, 5 Jun 2026 14:44:22 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20backup=20=E2=80=94=20mysql=5Fnative=5Fpa?= =?UTF-8?q?ssword=20f=C3=BCr=20MariaDB-Client=20gegen=20MySQL=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mariadb-dump kennt caching_sha2_password nicht (MySQL-8-Default). --default-auth=mysql_native_password umgeht das. Außerdem wird der Exit-Code des Dump-Prozesses jetzt ausgewertet — fehlerhafte Dumps werden erkannt statt als leere Datei abgelegt. Co-Authored-By: Claude Sonnet 4.6 --- lib/backup.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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(); + } }); });