diff --git a/modules/backup/mysql-restore-to-sql.sh b/modules/backup/mysql-restore-to-sql.sh index 0a37fdc..45b3a41 100755 --- a/modules/backup/mysql-restore-to-sql.sh +++ b/modules/backup/mysql-restore-to-sql.sh @@ -83,6 +83,12 @@ cleanup_on_exit() { rm -f "$TEMP_DATADIR/socket.mysql" "$TEMP_DATADIR/mysql.lock" 2>/dev/null || true fi + # Clean up PID file if it still exists (BUG FIX: stale PID cleanup) + rm -f "$TEMP_DATADIR/mysql.pid" 2>/dev/null || true + + # Clean up error log backups to prevent accumulation (BUG FIX: mysql.err.old cleanup) + rm -f "$TEMP_DATADIR/mysql.err.old" 2>/dev/null || true + print_success "Second instance cleaned up" fi fi @@ -1281,7 +1287,10 @@ dump_database() { # Perform dump echo "" - if mysqldump -h localhost -S "$datadir/socket.mysql" --single-transaction "$dbname" > "$output_file" 2>/dev/null; then + # BUG FIX: Capture mysqldump stderr to show errors if dump fails + local dump_stderr=$(mktemp) + if mysqldump -h localhost -S "$datadir/socket.mysql" --single-transaction "$dbname" > "$output_file" 2>"$dump_stderr"; then + rm -f "$dump_stderr" # Verify dump completed if grep -q "Dump completed on" "$output_file"; then local size=$(du -h "$output_file" | awk '{print $1}') @@ -1305,7 +1314,15 @@ dump_database() { return 1 fi else - print_error "mysqldump failed" + # BUG FIX: Show mysqldump errors instead of silently failing + print_error "mysqldump failed with exit code $?" + if [ -f "$dump_stderr" ] && [ -s "$dump_stderr" ]; then + print_error "Error details:" + while IFS= read -r line; do + echo " $line" | sed 's/^[[:space:]]*/ /' + done < "$dump_stderr" + rm -f "$dump_stderr" + fi return 1 fi }