Возможность создавать процедуры, но не функции

Я могу создавать хранимые процедуры 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), вы вряд ли получите супер привилегии. Это позволяет в полной мере контролировать всю систему.

Кроме того, вы также должны включить одну из трех упомянутых вещей, чтобы система бинлоггинга / репликации знала, как обрабатывать вашу функцию, если бы у вас были привилегии для ее использования.

Решено воссозданием базы данных!

Я думаю, что это, вероятно, стандартное решение, но я почти паникую, когда это происходит со мной.

Так что тем, кто сталкивается с подобной проблемой.

Попробуйте воссоздать вашу базу данных.

Относительно того, почему это сломалось во-первых, я все еще не имею понятия

Другие вопросы по тегам