Ошибки при импорте базы данных с триггерами
Симптомы
В процессе импорта или восстановления базы данных с триггерами возникает ошибка:
«Восстановление базы данных завершилось с ошибкой 1227. В доступе отказано. Возможно в восстанавливаемом дампе есть триггеры, которые требуют для восстановления прав суперпользователя».
Причины
Импорт базы данных в панели ispmanager выполняется без прав суперпользователя для защиты от возможных повреждений сервера БД.
Решение
Базы данных, содержащие триггеры, необходимо импортировать через консоль под пользователем «root». Для этого выполните следующую команду:
mysql -h IP-АДРЕС -P ПОРТ -uroot ИМЯ_БАЗЫ_ДАННЫХ -p < ПУТЬ_ДО_ДАМПА/ИМЯ_ФАЙЛА.sql
Информацию о сервере баз данных (IP-адрес, порт, пароль) можно узнать в настройках конкретного сервера баз данных:
- Для lite/pro/host: Базы данных - Серверы БД - выберите сервер БД - Изменить;
- Для business: Узлы кластера - выделите узел кластера - раскройте меню «три точки» - Серверы БД - выберите сервер БД - Изменить.
Удаление триггеров из базы данных
Альтернативным решением является удаление триггеров из файла дампа перед импортом. Для этого сделайте резервную копию файла, перейдите в директорию файла дампа и выполните следующую команду:
sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i ПУТЬ_ДО_ДАМПА/ИМЯ_ФАЙЛА.sql