#mysql #sql #mysql-workbench
#mysql #sql #mysql-workbench
Вопрос:
Я пытаюсь импортировать дамп базы данных на свой локальный хост в MySQL Workbench. В момент попытки импортировать дамп MySQL версии 5.7 в версию 8.0.14 я получаю эту ошибку:
ОШИБКА 1231 (42000) в строке 198: переменной
sql_mode
не удается установить значениеNO_AUTO_CREATE_USER
Сбой операции с кодом выхода
1
Проблема в том, что дамп имеет размер 4 ГБ, и я не могу его открыть, потому что мой компьютер зависает. Существует ли форма удаления этой строки или решения этой проблемы?
Комментарии:
1. Вероятно, вы не сможете открыть его ни в одном обычном текстовом редакторе, но вы можете выполнить поиск-замену для конкретной строки, которая вызывает проблемы. Такие инструменты, как
perl
илиsed
, могут сделать это легко. Вы пытаетесь загрузить дамп из более новой версии в более старую версию MySQL? Помните, чтоmysqldump
имеет целую кучу опций, поэтому вы можете отключить части дампа, которые вызывают проблемы.2. Я пытаюсь запустить файл дампа более старой версии MySQL в более новую версию. Как я могу отключить эту часть кода?
3. Является ли локальное обновление жизнеспособным вариантом? Если вы можете синхронизировать версии, процесс обычно проходит намного плавнее. В 8.0 многое изменилось, но обновление должно быть достаточно плавным.
4. Могу ли я обновить его, не имея базы данных на локальном хостинге?
5. или лучше используйте параметр —force, подобный этому: mysql -u root -pxxxx —force <your_file вы также можете добавить базу данных для использования
Ответ №1:
Похоже, вы столкнулись с этой ошибкой MySQL 8.0. На странице ошибки указано, что это исправлено в версии 8.0.13, но поскольку вы используете 8.0.14 и все еще сталкиваетесь с проблемой, это может быть не так…
Также предлагается обходной путь: заменить все экземпляры ,NO_AUTO_CREATE_USER
ничем. Если вы не можете открыть файл с помощью текстового редактора, потому что он слишком большой, вы можете использовать Perl для обновления файла на месте с помощью регулярного выражения, например:
perl -pi -e 's/,NO_AUTO_CREATE_USER//g' file
Объяснение флагов:
-e
вызывает выполнение кода Perl-p
означает: выполнить код для каждой строки файла-i
означает: отредактируйте файл на месте
Комментарии:
1. Я делаю это в настольном приложении PerlCritic или в MySQL Workbench?