mysqldump në PowerShell korrupton karakteret jo latine kur eksporton bazën e të dhënave (ZGJIDHUR)
mysqldump është një mjet i MySQL për krijimin e kopjeve rezervë të bazës së të dhënave dhe tabelave. Ndryshe nga phpMyAdmin, i cili, megjithëse ofron një ndërfaqe në internet, është një mjet më i ngadalshëm për shkak të kufizimeve të ndërmjetësve si PHP dhe Apache, mysqldump është një mjet shumë më efikas pa kufizimet për rezervimin e të dhënave shumë të mëdha.
Por në Windows, mysqldump ka disa nuanca. Për shkak të veçorive të PowerShell për të punuar me kodime, të gjithë karakteret jo latine mund të korruptohen në bazat e të dhënave të eksportuara. Ky problem nuk shihet në CMD, por versionet e fundit të Windows përdorin PowerShell si parazgjedhje, kështu që problemi në fjalë prek të gjithë përdoruesit që ekzekutojnë mysqldump për të rezervuar bazat e të dhënave në Windows.
Komanda e mëposhtme, e ekzekutuar në PowerShell 7:
.\mysqldump.exe -u root --all-databases > all-databases_ps7.sql
Krijon një skedar all-databases_ps7.sql të koduar UTF-8, në të cilin të gjitha bazat e të dhënave MySQL do të eksportohen duke përdorur mysqldump (për qëllime rezervë). Por në këto baza të dhënash të gjithë karakteret jo latine do të korruptohen në mënyrë të pakthyeshme!
Kjo do të thotë, në vend të cirilikës, do të jetë diçka e tillë:
'╨Р╤А╨▒╨╕╤В╤А╨░╨╢╨╜╤Л╨╣ ╨┐╤А╨╛╤Ж╨╨╨╤Б╤╤Б: ╡╤Б: ╨╕ ╨║/╨Ъ.╨Ь. ╨Р╤А╤Б╨╗╨░╨╜╨╛╨▓, ╨Ф.╨е. ╨Т╨░╨╗╨╡╨╡╨▓, ╨а.╨Э. ╨У╨╕╨╝╨░╨╖╨
Për të shmangur këtë problem, përdorni mysqldump me opsionin --result-file. Komanda e mëposhtme do të ruajë bazën e të dhënave në kodimin e duhur:
.\mysqldump.exe -u root --all-databases --result-file=all-databases.sql
Ju gjithashtu mund të përdorni konstruktin e mëposhtëm me dy komanda për të rregulluar problemin e kodimit:
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("UTF-8")
.\mysqldump.exe -u root --all-databases > all-databases.sql