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

Я чрезвычайно новичок в MySQL и запускаю его в Windows. Я пытаюсь восстановить базу данных из dumpfile в 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 файл, но он все равно дает ту же ошибку. Что мне делать? Пожалуйста помоги.

UPDATE

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

Ответ 1

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

Ответ 2

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

mysqldump db > dump.sql

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

Юникод-код Юникода Юникода с очень длинными строками с терминаторами линии CRLF.

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

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

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

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

mysqldump <dbname> -r <filename>

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

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

Ответ 3

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

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

Теперь отправьте свой db.

Ответ 5

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

tar xf example.sql.gz

Ответ 6

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

Ответ 7

У меня была эта ошибка один раз, после запуска 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

То, что я сделал, это изменить его на это (pipe вместо 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

И проблема исчезла!

Ответ 8

Должен ли он файл dump.sql problem.Use Sequel Pro проверить ваш файл ecoding.It должны быть мусорные символы в вашем dump.sql.

Ответ 9

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

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

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

~$ cat mybackup.dmp 

В результате получилось:

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

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

CTRL + C

Ответ 10

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

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

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

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

Ответ 11

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

Ответ 12

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

Ответ 13

Вы можете использовать это, чтобы исправить ошибку:

zcat {address_sql_database(.tar.gz)} | mysql -u root -p {database_name} --binary-mode