Skip to content

Instantly share code, notes, and snippets.

@josemmo
Created August 28, 2020 18:48
Show Gist options
  • Save josemmo/24e35f2b4984a4370ce2c164f5956437 to your computer and use it in GitHub Desktop.
Save josemmo/24e35f2b4984a4370ce2c164f5956437 to your computer and use it in GitHub Desktop.
Repair MySQL data directory (for XAMPP)
# Based on this answer: https://stackoverflow.com/a/61859561/1956278
# Backup old data
Rename-Item -Path "./data" -NewName "./data_old"
# Create new data directory
Copy-Item -Path "./backup" -Destination "./data" -Recurse
Remove-Item "./data/test" -Recurse
$dbPaths = Get-ChildItem -Path "./data_old" -Exclude ('mysql', 'performance_schema', 'phpmyadmin') -Recurse -Directory
Copy-Item -Path $dbPaths.FullName -Destination "./data" -Recurse
Copy-Item -Path "./data_old/ibdata1" -Destination "./data/ibdata1"
# Notify user
Write-Host "Finished repairing MySQL data"
Write-Host "Previous data is located at ./data_old"
@spring8904
Copy link

Thank you!

@Chanaka-J
Copy link

Chanaka-J commented Jan 17, 2024

you can add a line at the beginning of the script to delete the existing "data_old" directory before creating a new backup.

# Delete existing data_old directory
Remove-Item -Path "./data_old" -Recurse -Force

@ItsSalman99
Copy link

Amazing ...

@Arman016
Copy link

Arman016 commented Feb 7, 2024

It's just awesome! Thanks very much!

@KipchirchirIan
Copy link

Marvelous! Works beautifully.

@aagirre92
Copy link

thanks! as @Chanaka-J suggests adding that line helps in case you have to run it more than once

@bismark-joe
Copy link

Thank you a thousand times.

@toperrrrrrrr
Copy link

This is amazing. Thank you!

@giang61
Copy link

giang61 commented Apr 9, 2024

Kudos. You're the best !

@gordonstevens
Copy link

Golden!

Thank you guise, this has been such an annoying beast that comes around more than once. Interesting though this has been on the books for 4 years now and still going strong.

you can add a line at the beginning of the script to delete the existing "data_old" directory before creating a new backup.

# Delete existing data_old directory
Remove-Item -Path "./data_old" -Recurse -Force

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment