fix: backup — mysql_native_password für MariaDB-Client gegen MySQL 8
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 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -33,6 +33,7 @@ async function runBackup(): Promise<void> {
|
||||
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<void> {
|
||||
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());
|
||||
if (dumpCode !== 0) {
|
||||
reject(new Error(`${dumpBin} exit ${dumpCode}: ${dumpErr.trim()}`));
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user