Назад | Перейти на главную страницу

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

Я могу создавать хранимые процедуры mysql, но не хранимые функции.

пример:

DELIMITER $$;
DROP FUNCTION IF EXISTS `interkm_db1`.`temp`$$
CREATE FUNCTION `interkm_db1`.`temp` ()
    RETURNS int
BEGIN
    return 1;
END$$
DELIMITER ;$$

Код ошибки: 1418 В объявлении этой функции отсутствуют ДЕТЕРМИНИСТИЧЕСКИЕ, НЕТ SQL или ЧТЕНИЕ ДАННЫХ SQL, а ведение двоичного журнала включено (вы мощь хотите использовать менее безопасную переменную log_bin_trust_function_creators)

Он по-прежнему жалуется, что у него нет привилегии SUPER, когда я использую оператор DETERMINISTIC.

Это установка 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' @ '%' РАЗРЕШЕНИЕ НА ИСПОЛЬЗОВАНИЕ . TO 'interkm_1' @ '%' ОПРЕДЕЛЕННЫЙ ПАРОЛЕМ '-------' ПРЕДОСТАВЛЯТЬ ВСЕ ПРИВИЛЕГИИ interkm_db1. * TO 'interkm_1' @ '%'

Справочный источник: 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».)

Поскольку это общая установка (размещенная у провайдера), вы вряд ли получите супер привилегии. Это позволяет в значительной степени контролировать всю систему.

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

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

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

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

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

Что касается того, почему он вообще сломался, я до сих пор не понимаю