zaLinux.ru

Ошибка «ERROR at line 1: Unknown command ‘\-‘.» (РЕШЕНО)


Системы управления базами данных (СУБД) MariaDB и MySQL вполне совместимы между собой (по крайней мере, в базовом функционале). И до недавнего времени можно было без каких-либо проблем импортировать и экспортировать базы данных из MariaDB в MySQL и в обратном порядке.

Если вы обновили MariaDB до последней версии, то при импорте базы данных в MySQL или более старые версии MariaDB может возникнуть следующая ошибка:

ERROR at line 1: Unknown command '\-'.

Хорошая новость заключается в том, что данную ошибку очень легко исправить.

Эта ошибка вызвана следующей строкой комментария в файле с импортируемой базой данных или таблицей:

/*!999999\- enable the sandbox mode */

То есть ошибку вызывает последовательность символов «\-» которая находится в комментарии и которую сервер MySQL воспринимает как команду, которая этому серверу не известна. Эту строку комментария (также как и любые другие комментарии) можно удалить без потери значимых данных.

Вы можете вручную открыть файл .sql с импортируемой базой данных и удалить эту строку (она является первой).

Поскольку проблемная строка является первой в файле импорта базы данных, то её можно удалить с помощью следующей команды в командной строке (замените DB.sql на имя файла с базой данных):


sed -i '1d' DB.sql

Смотрите также: Как удалить первую строку из файла в командной строке. Как удалить первые 2, 3 или любое другое количество строк из файла

Данная проблема возникает при импорте баз данных, которые были экспортированы из MariaDB 11.4.2 (и, вероятно, более поздних версий).

Какого-то постоянного решения (чтобы не приходилось каждый раз удалять первую строку) в виде настройки или опции MariaDB я не нашёл.

При экспорте таблиц и баз данных в phpMyAdmin эта проблема не возникает даже если используется MariaDB. Это проблема возникает только при экспорте с помощью mariadb-dump.

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

Например, команду экспорта

mariadb-dump -u root -p TestDB TestTABLE > testdb.sql

нужно заменить на следующую команду, которая также сохранит в файл экспортируемую базу данных, но при этом первая строка с проблемным комментарием будет удаляться:

mariadb-dump -u root -p TestDB TestTABLE | sed '1d' > testdb.sql

В этой команде:

  • -u root — имя пользователя (замените root на фактическое имя пользователя)
  • -p — запрашивать пароль пользователя базы данных
  • TestDB — название базы данных
  • TestTABLE — название экспортируемой таблицы (если не указать, то будут экспортированы все таблицы)
  • testdb.sql — имя файла, в который будет сохранена экспортируемая база данных.

При желании вы можете добавить в команду сжатие экспортируемое базы данных в архив:

mariadb-dump -u root -p TestDB TestTABLE | sed '1d' | zip testdb.zip -

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *