Возможность создавать процедуры, но не функции
Я могу создавать хранимые процедуры MySQL, но не хранимые функции.
пример:
DELIMITER $$;
DROP FUNCTION IF EXISTS `interkm_db1`.`temp`$$
CREATE FUNCTION `interkm_db1`.`temp` ()
RETURNS int
BEGIN
return 1;
END$$
DELIMITER ;$$
Код ошибки: 1418 Эта функция не имеет ни DETERMINISTIC, ни SQL, ни READS SQL DATA в своем объявлении, и двоичное ведение журнала включено (вы можете использовать менее безопасную переменную log_bin_trust_function_creators)
Он по-прежнему жалуется, что не имеет привилегии SUPER, когда я использую оператор DETERMINISTIC.
Это ISP-установка MySQL.
SHOW VARIABLES LIKE "%version%";
protocol_version 10
version 5.1.61-0+squeeze1-log
version_comment (Debian)
version_compile_machine i486
version_compile_os debian-linux-gnu
ПОДРОБНЕЕ У меня есть только ПРИВИЛЕГИИ к моей базе данных на
ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА interkm_db1
.* TO 'interkm_1'@'%' GRANT USAGE ON . TO 'interkm_1' @ '%' ИДЕНТИФИЦИРОВАНО ПО ПАРОЛУ '-------' ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА interkm_db1
.* TO 'interkm_1'@'%'
2 ответа
Справочный источник: http://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html
Чтобы создать или изменить хранимую функцию, вы должны иметь привилегию SUPER в дополнение к привилегии CREATE ROUTINE или ALTER ROUTINE, которая обычно требуется. (В зависимости от значения DEFINER в определении функции SUPER может потребоваться независимо от того, включено ли двоичное ведение журнала. См. Раздел 13.1.9, "Синтаксис CREATE PROCEDURE и CREATE FUNCTION".)
Так как это общая установка (размещенная в ISP), вы вряд ли получите супер привилегии. Это позволяет в полной мере контролировать всю систему.
Кроме того, вы также должны включить одну из трех упомянутых вещей, чтобы система бинлоггинга / репликации знала, как обрабатывать вашу функцию, если бы у вас были привилегии для ее использования.
Решено воссозданием базы данных!
Я думаю, что это, вероятно, стандартное решение, но я почти паникую, когда это происходит со мной.
Так что тем, кто сталкивается с подобной проблемой.
Попробуйте воссоздать вашу базу данных.
Относительно того, почему это сломалось во-первых, я все еще не имею понятия