Как исправить ошибку миграции базы данных модуля RSserver?¶
При выполнении миграции базы данных модуля RSserver может возникнуть ошибка следующего вида:
================
DB migrate table
================
+-+-----------+------+-----------------------------------------------------------------------------------------------------------------------------+
|N|Module name|Status|Result |
+-+-----------+------+-----------------------------------------------------------------------------------------------------------------------------+
|1|RSserver |FAIL |Error while db migrate: (pymysql.err.InternalError) (1419, 'You do not have the SUPER privilege and binary logging is enabled|
| | | |(you *might* want to use the less safe log_bin_trust_function_creators variable)') |
| | | |projects SET projects.reserve = [SQL: CREATE TRIGGER reserve_servers_create AFTER INSERT ON servers FOR EACH ROW BEGIN IF |
| | | |NEW.deleted = 0 THEN UPDATE projects.reserve + 1 WHERE BINARY projects.project_id = BINARY NEW.project_id AND |
| | | |projects.deleted = 0; END IF;END;] (Background on this error at: http://sqlalche.me/e/2j85) |
+-+-----------+------+-----------------------------------------------------------------------------------------------------------------------------+
END return value: True
Данная ошибка появляется в том случае, если у Вас включена работа с журналами (параметр log_bin
в конфигурационном файле базы данных) и не разрешено журналирование работы с недетерминированными функциями (параметр log_bin_trust_function_creators
, по умолчанию имеет значение 0). Так как RSserver имеет в своем составе недетерминированные функции, необходимо добавить возможность работы с ними.
Решение¶
Для добавления возможности работы с недетерминированными функциями необходимо в консоли mysql
выполнить:
SET GLOBAL log_bin_trust_function_creators = 1
После чего миграция базы данных должна пройти успешно.