Системы управления базами данных (СУБД) 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 -
Связанные статьи:
- Чувствительный к регистру поиск в phpMyAdmin (100%)
- Как искать в phpMyAdmin (94.1%)
- Как увеличить размер колонок в phpMyAdmin (94.1%)
- Ошибка «ERROR 1044 (42000): Access denied for user 'mial'@'localhost' to database 'TestDB'». Не удаётся создать базу данных MySQL (РЕШЕНО) (79.3%)
- Ошибка при использовании выражений USE в MySQL (MariaDB): «ERROR 1044 (42000): Access denied for user» (РЕШЕНО) (79.3%)
- Как отремонтировать диск LVM с помощью fsck (RANDOM - 6%)