Ошибка при восстановления из дампа sql

При попытке восстановить БД из дампа получил ошибку

1064 (42000) at line 22: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘DEFAULT CHARACTER SET latin1 */' at line 1

Конечно же, дамп был очень большой (свыше 20 GB) и руками вымарать строку не представлялось возможным: ни vi, ни nano такой файл не смогут «прожевать»

Пришлось использовать старый добрый sed

# Строка была такой
# CREATE DATABASE /*!32312 IF NOT EXISTS*/ `databasename` /*!40100 DEFAULT CHARACTER SET latin1 */;
# Чтобы удалить ее, даем команду
sed -i 's/CREATE DATABASE.*;/--/' ./tempo.sql

Правда, на этом проблема не была завершена. На исходном сервере БД не имела префикс, а на новом — требовалось его использовать. Поэтому пришлось так же заменить databasename на admin_databasename. При попытке восстановления из бекапа ошибка была такой:

ERROR 1044 (42000) at line 22: Access denied for user ‘admin_databasename'@'localhost' to database ‘databasename'

# Меняем название БД в дампе.
sed -i 's/`databasename`/`admin_databasename`;/' ./tempo.sql

После этой несложной манипуляции дальнейшее восстановление БД из дампа с ключом —default-character-set=utf8 прошло без запинок.

# Восстановление базы из дампа
mysql -uadmin_databasename -p admin_databasename  --default-character-set=utf8  < tempo.sql

Напомню в очередной раз, что выделенные серверы выгодно заказывать в компании vps-server.

Добавить комментарий

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