it-swarm.com.ru

Включить бинарный режим при восстановлении базы данных из дампа SQL

Я чрезвычайно новичок в MySQL и работаю в Windows. Я пытаюсь восстановить базу данных из файла дампа в MySQL, но получаю следующую ошибку:

$ >mysql -u root -p -h localhost -D database -o < dump.sql
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: 'SQLite format 3'.

Я попытался поместить --binary-mode в INI-файл, но он все равно выдает ту же ошибку. Что я должен делать? Пожалуйста помоги. 

ОБНОВЛЕНИЕ

Как предложил Ник в своем комментарии, я попробовал $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql, но он дал мне следующий ERROR at line 1: Unknown command '\☻'. Это файл дампа 500 Мб, и когда я просматриваю его содержимое с помощью gVIM, я вижу только выражения и данные, которые не понятны. 

54
user1434997

Разархивируйте файл, а затем снова импортируйте.

113
srinivas

Я сталкиваюсь с той же проблемой в Windows, восстанавливая файл дампа. Мой файл дампа был создан с помощью Windows powershell и mysqldump, например:

mysqldump db > dump.sql

Проблема возникает из-за кодировки powershell по умолчанию - UTF16. Чтобы углубиться в это, мы можем использовать утилиту «file» из GNU, и существует версия для Windows здесь
Вывод моего файла дампа:

Little-endian UTF-16 Текст Unicode, с очень длинными строками, с разделителями строк CRLF.

Затем необходимо преобразование системы кодирования, и это может сделать различное программное обеспечение. Например, в Emacs, 

M-x set-buffer-file-coding-system

затем введите требуемую систему кодирования, такую ​​как utf-8.

И в будущем, для лучшего результата mysqldump, используйте:

mysqldump <dbname> -r <filename> </ B>

и затем вывод обрабатывается самой mysqldump, но не перенаправлением powershell.

ссылка: https://dba.stackexchange.com/questions/44721/error- while-restoring-a-database-from-an-sql-dump

41
cdarlint

Вы пробовали открыть в notepad ++ (или другом редакторе) и преобразовать/сохранить нас в UTF-8?

Смотрите: notepad ++, конвертирующий ANSI-кодированный файл в utf-8

Другим вариантом может быть использование textwrangle, чтобы открыть и сохранить файл как UTF-8: http://www.barebones.com/products/textwrangler/

7
Menelaos Bakopoulos

Распакуйте ваш файл с помощью инструмента архивации Tar. Вы можете использовать это следующим образом: 

tar xf example.sql.gz
6
Ghasem Pahlavan

В Windows-машине выполните следующие действия.

  1. Открыть файл в блокноте.
  2. Нажмите на Сохранить как
  3. Выберите тип кодировки UTF-8.

Теперь источник вашей базы данных.

5
Amit Kumar Rai

Однажды у меня была эта ошибка после запуска mysqldump в Windows PowerShell, например, так:

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

Что я сделал, так это изменил это (труба вместо Set-Content):

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF | Set-Content db_objects.sql

И проблема ушла!

4
Ifedi Okonkwo

Может быть, у вашего dump.sql есть символ мусора в начале вашего файла или В начале пустая строка.

4
Subodh Ranadive

Вы должны решить проблему с dump.sql. Используйте Sequel Pro для проверки вашего файла ecoding. В вашем dump.sql должны быть символы мусора.

2
Datty Wang

У меня была та же проблема, но я обнаружил, что файл дампа на самом деле был резервной копией MSSQL Server, а не MySQL.

Иногда старые файлы резервных копий играют с нами шутку. Проверьте файл дампа.

В окне терминала:

~$ cat mybackup.dmp 

Результат был:

TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...

Чтобы остановить обработку команды cat:

CTRL + C
2
Hugo Miura

Если вам не хватает места или вы не хотите тратить время на его распаковку, попробуйте эту команду.

gunzip < compressed-sqlfile.gz | mysql -u root -p

Не забудьте заменить сжатый sqlfile.gz именем вашего сжатого файла.

Восстановление .gz не будет работать без команды, указанной выше.

2
Dewlance

Ваш файл должен иметь расширение только .sql, (.Zip, .gz .rar) и т.д. Не будет поддерживать . Пример: dump.sql

0
Ibrahim Akbar

Файл, который вы пытаетесь импортировать, является файлом Zip. Разархивируйте файл и повторите попытку импорта.

0
Javaid Mir