mysqldump в PowerShell портит нелатинские символы при экспорте базы данных (РЕШЕНО)


mysqldump — это утилита из состава пакета MySQL предназначенная для создания резервных копий баз данных и таблиц. В отличие от phpMyAdmin, которая хоть и предлагает веб-интерфейс, но является более медленным инструментом, связанными с ограничением промежуточных звеньев, таких как PHP и Apache, mysqldump намного более эффективным инструментом лишённым ограничений для создания резервных копий очень объёмных данных.

Смотрите также: Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin

Но в Windows в работе mysqldump имеются нюансы. Из-за особенностей PowerShell по работе с кодировками, в экспортируемых базах данных может быть испорчены все нелатинские символы. Эта проблема не наблюдается в CMD, но в последних версиях Windows по умолчанию используется PowerShell, поэтому рассматриваемая проблема затрагивает всех пользователей, которые запускают mysqldump для создания резервных копий баз данных в Windows.

Следующая команда, выполненная в PowerShell 7:

.\mysqldump.exe -u root --all-databases > all-databases_ps7.sql

Создаст файл all-databases_ps7.sql в кодировке UTF-8 в который с помощью mysqldump будут экспортированы все базы данных MySQL (с целью создания резервной копии). Но в этих базах будут безвозвратно испорчены все нелатинские символы!

То есть вместо кириллицы будет примерно следующее:

'╨Р╤А╨▒╨╕╤В╤А╨░╨╢╨╜╤Л╨╣ ╨┐╤А╨╛╤Ж╨╡╤Б╤Б: ╤Г╤З╨╡╨▒╨╜╨╕╨║ / ╨Ъ.╨Ь. ╨Р╤А╤Б╨╗╨░╨╜╨╛╨▓, ╨Ф.╨е. ╨Т╨░╨╗╨╡╨╡╨▓, ╨а.╨Э. ╨У╨╕╨╝╨░╨╖╨

Чтобы избежать этой проблемы, используйте mysqldump с опцией --result-file. Следующая команда сохранит базу данных в правильной кодировке:

.\mysqldump.exe -u root --all-databases --result-file=all-databases.sql

Вы также можете использовать следующую конструкцию из двух команд для исправления проблемы с кодировкой:

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("UTF-8")
.\mysqldump.exe -u root --all-databases > all-databases.sql


Добавить комментарий

Ваш адрес email не будет опубликован.

wp-puzzle.com logo