Я новичок в 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, все, что я вижу, - это выражения и данные, которые непонятны.
mysql
database
mysqldump
database-restore
user1434997
источник
источник
.sql
файл со странными символами и кодировками. Вторая попытка сработала нормально.Ответы:
Разархивируйте файл и снова импортируйте.
источник
Я сталкиваюсь с той же проблемой в Windows, восстанавливая файл дампа. Мой файл дампа был создан с помощью Windows PowerShell и mysqldump, например:
mysqldump db > dump.sql
Проблема связана с кодировкой по умолчанию для PowerShell - UTF16. Чтобы разобраться в этом, мы можем использовать «файловую» утилиту GNU, и существует версия для Windows. здесь .
Результат моего файла дампа:
Текст Unicode UTF-16 с прямым порядком байтов, с очень длинными строками, с терминаторами строк CRLF.
Затем требуется преобразование системы кодирования, и есть различные программы, которые могут это сделать. Например, в emacs,
M-x set-buffer-file-coding-system
затем введите требуемую систему кодирования, такую как utf-8.
И в будущем для лучшего результата mysqldump используйте:
mysqldump <dbname> -r <filename>
а затем вывод обрабатывается
mysqldump
сам по себе, но не перенаправлением powershell.ссылка: /dba/44721/error- while-restoring-a-database-from-an-sql-dump
источник
На компьютере с Windows выполните предыдущие шаги.
Теперь создайте свой db.
источник
Извлеките файл с помощью инструмента архивирования Tar. вы можете использовать это так:
источник
Вы пробовали открыть в блокноте ++ (или другом редакторе) и преобразовать / сохранить нас в UTF-8?
Смотрите: notepad ++ преобразование файла, закодированного в ansi, в utf-8
Другой вариант - использовать textwrangle для открытия и сохранения файла как UTF-8: http://www.barebones.com/products/textwrangler/
источник
Однажды у меня была эта ошибка после запуска
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
И проблема ушла!
источник
Возможно, ваш dump.sql имеет символ мусора в начале вашего файла или в начале есть пустая строка.
источник
Если у вас недостаточно места или вы не хотите тратить время на его распаковку, попробуйте эту команду.
Не забудьте заменить compressed-sqlfile.gz именем сжатого файла.
Восстановление .gz не будет работать без указанной выше команды.
источник
Вы должны решить проблему с файлом dump.sql. Используйте Sequel Pro, проверьте кодировку вашего файла. Это должны быть символы мусора в вашем dump.sql.
источник
У меня была такая же проблема, но я обнаружил, что файл дампа на самом деле был резервной копией сервера MSSQL, а не MySQL.
Иногда устаревшие файлы резервных копий играют с нами злую шутку. Проверьте свой файл дампа.
В окне терминала:
Результат был:
Чтобы остановить обработку команды cat:
источник
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
источник
Файл, который вы пытаетесь импортировать, представляет собой zip-файл. Разархивируйте файл и повторите попытку импорта.
источник
В Linux Разархивируйте файл с помощью gunzip. Отредактируйте распакованный файл sql с помощью
Удалите первую двоичную строку с помощью esc dd перейдите в конец файла с помощью esc shift g удалите последнюю двоичную строку с помощью dd сохраните файл esc x: Затем повторно импортируйте в mysql с помощью:
Я выполнил это с помощью sql-файла 20go из резервной копии mysql cpanel jetbackup. Подождите, пока vi выполнит работу для больших файлов
источник
Ваш файл должен иметь только расширение .sql, (.zip, .gz .rar) и т. Д. Не поддерживаются. пример: dump.sql
источник
Вы можете использовать это, чтобы исправить ошибку:
источник
Я знаю, что исходный вопрос с плакатами был решен, но я пришел сюда через Google, и различные ответы в конечном итоге привели меня к тому, что я обнаружил, что мой SQL был сброшен с другой кодировкой по умолчанию, чем та, которая использовалась для его импорта. Я получил ту же ошибку, что и исходный вопрос, но, поскольку наш дамп был передан другому клиенту MySQL, мы не могли пойти по пути, открыв его другим инструментом и сохранив по-другому.
Для нас решение оказалось
--default-character-set=utf8mb4
вариантом, который можно использовать как при вызове,mysqldump
так и при вызове для импорта черезmysql
. Конечно, значение параметра может отличаться для других, сталкивающихся с той же проблемой, просто важно сохранить его неизменным, так как для серверов (или инструментов) по умолчанию может использоваться любая кодировка.источник
mysqldump -uUSER -p user_db | gzip > user_db_$(date +"%Y%m%d_%H%M").sql.gz
затем пытается импортировать его, используяgunzip -c user_db_datetime.sql.gz | mysql -uUSER -p user_db
Старый но золотой!
На MacOS (Catalina 10.15.7) это было немного странно: мне пришлось переименовать свой
dump.sql
в,dump.zip
и после этого мне пришлось использовать поисковик (!), Чтобы распаковать его. в терминалеunzip dump.zip
odertar xfz dump.sql[or .gz .tar ...]
приводит к сообщению об ошибке.Наконец, Finder полностью разархивировал его, после чего я мог без проблем импортировать файл.
источник