能够创build程序而不是function

我能够创buildMySQL存储过程,但不存储function。

例:

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

错误代码:1418该函数在其声明中没有DETERMINISTIC,NO SQL或READS SQL DATA,并且启用二进制日志logging(您可能希望使用不太安全的log_bin_trust_function_creatorsvariables)

它仍然抱怨说,当我使用DETERMINISTIC语句时它没有SUPER特权。

这是一个ISP托pipe的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'@'%'IDENTIFIED BY PASSWORD'——-' interkm_db1所有interkm_db1 * TO'interkm_1'@'%'

参考资料: http : //dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html

要创build或更改存储的函数,除了通常需要的CREATE ROUTINE或ALTER ROUTINE特权之外,还必须具有SUPER特权。 (根据函数定义中的DEFINER值,无论是否启用二进制日志logging,都可能需要使用SUPER,请参见第13.1.9节“CREATE PROCEDURE和CREATE FUNCTION Syntax”。)

由于这是一个共享安装(ISP托pipe),您不太可能获得超级权限。 这可以实现很大程度的全系统控制。

除此之外,你还必须包括提到的三件事情之一,所以binlogging /复制系统知道如何处理你的function,如果你有权使用它。

通过重新创build数据库来解决!

我想这可能是一个标准的解决scheme,但当我发生这种情况时,我几乎感到恐慌。

所以那些遇到类似问题的人

尝试重新创build您的数据库。

至于为什么它首先打破,我还没有一个线索