Я чрезвычайно новичок в 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'.
Я попытался, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
но это дало мне следующее. ERROR at line 1: Unknown command '\☻'.
Это файл дампа 500 Мб, и когда я просматриваю его содержимое с помощью gVIM, я вижу только выражения и данные, которые не понятны. Кроме того, когда я пытаюсь скопировать содержимое из файла, чтобы опубликовать здесь, все, что я могу скопировать, это: SQLite format 3
Этот вид кажется странным.
.sql
файла со странными символами и кодировками. Вторая попытка работала нормально.Ответы:
Ссылка на
--binary-mode
(введенная в MySQL 5.6.3), вероятно, отвлекает.Там не похоже, что вы имеете дело с выходным файлом mysqldump. Попробуйте
file
утилиту.Если вы не получили
ASCII text
ответ, вы имеете дело с чем-то, что вообще не является файлом дампаmysqldump
, или вы имеете дело с чем-то сжатым (например, с помощью gzip или bzip2), который вы ' Мне нужно разархивировать, прежде чем обвязать егоmysql
.Если вы видите, у
SQLite 3.x database
вас точно есть ответ ... это необработанная база данных SQLite, а не файл дампа MySQL.Действительно, первые несколько байтов базы данных SQLite:
Обратите внимание, что 16-й октет здесь равен 0x00, что объясняет
ERROR: ASCII '\0' appeared in the statement...
сообщение в этом случае. Предположение о том , что--binary-mode
подходит ложная тревога.Пользователи Windows: утилита 'file' - это инструмент от Unix, но версию для Windows можно найти здесь .
источник
file MySQL.sql
возвращаетсяUTF-8 Unicode text, with very long lines
. Есть идеи?less -S MySQL.sql
. Что ты видишь? Это похоже на файл дампа MySQL? Они по большей части читаемы человеком. (Используйтеq
для выхода.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. И перемещение вниз через пробел показывает типичные инструкции MySQL. Однако, если я продолжу идти вниз, он зависнет на определенной линии. Та же самая строка, которая появилась в сообщении об ошибке. Я углубился в это и обнаружил, что дамп MySQL не был правильно разархивирован в первый раз. Не уверен, что пошло не так, но когда я разархивировал, он работает нормально. Я добавил ответ об этом здесь для других: stackoverflow.com/a/51432853/293280 Большое спасибо за вашу помощь и быстрый ответ. 👍Windows
Создайте файлы дампа с помощью этой команды
С помощью:
источник
У меня была эта ошибка однажды, после запуска
mysqldump
на Windows PowerShell, например, так:Что я сделал, так это изменил это (труба вместо Set-Content):
И проблема ушла!
источник
Я тоже в PowerShell
Я столкнулся с этой проблемой, когда использовал PowerShell для вызова mysqldump и > для передачи вывода в файл. PowerShell использовал неправильную кодировку при создании файла, и я получил ту же ошибку при попытке импортировать файл с помощью mysql .. <exported-file.sql
Я обнаружил, что установка кодировки по умолчанию UTF8 в сеансе PowerShell решает эту проблему.
Мое разрешение - Проверено PowerShell 5.1:
Пример: как я производил экспорт (упрощенно) :
Примечание. Обнаружено, что это не работает в PowerShell 4.0
Моя среда разработки работала на 5.1, но prod на 4.0, и мое первоначальное исправление не работает в старых версиях PowerShell.
Нужно использовать
| Set-Content -Encoding UTF8 $fileName
Это было уже предложено Ифеди
источник
Вы пытались открыть в notepad ++ (или другом редакторе) и преобразовать / сохранить нас в UTF-8?
См .: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8.
Другим вариантом может быть использование textwrangle, чтобы открыть и сохранить файл как UTF-8: http://www.barebones.com/products/textwrangler/
источник
Кто-то прислал мне сжатый гтарь. Даже не был слишком знаком с gtar, но это еще один формат сжатия.
Однако я смог распаковать его так же, как обычно:
И тогда я мог бы сделать импорт:
источник
Решение: Извлеките файл резервной копии, а затем восстановите этот извлеченный дамп sql.
Пример :
Резервная копия была взята в виде файла dump.sql.gz и распакована с использованием gunzip cmd следующим образом:
И восстановите извлеченный файл dump.sql.
Ссылка: О бинарном и интерактивном режиме MySQL.
http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode
Это работает для меня, и все готово!
источник
В моем случае файл был поврежден. База данных была сжата с расширением,
.bz2
но это было на самом деле.tar.bz2
.Распаковка с использованием
bzip2 -dk
не выводит никаких ошибок и генерирует файл. Использование командыfile
в выходных файлах,bzip2 compressed data, block size = 900k
чтобы ее использование не выглядело даже неправильно.Я должен был использовать
tar -xf myfile.bz2
источник