ウェブ、ショウジン

ストアドファンクション作成におけるERROR 1418

2009-1-11
Category
MySQL

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

CREATE FUNCTIONを有効にするには、作成時にDETERMINISTICもしくはNO SQL、READS SQL DATAの中から一つを選んで明確に指定しないといけないらしい。これをしないと上記のようなエラーが発生する。(エラー内容にもそのように出ている)

詳しいことは以下URLに。
http://dev.mysql.com/doc/refman/5.1/ja/stored-procedure-logging.html

いずれも指定しないとこのようにエラー

mysql> DELIMITER //
mysql> CREATE FUNCTION fu2() RETURNS DOUBLE
    -> BEGIN
    -> DECLARE r DOUBLE;
    -> SELECT AVG(uria) INTO r FROM tb;
    -> RETURN r;
    -> END
    -> //
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

指定するとQuery OK

mysql> DELIMITER //
mysql> CREATE FUNCTION fu2() RETURNS DOUBLE <strong>DETERMINISTIC</strong>
    -> BEGIN
    -> DECLARE r DOUBLE;
    -> SELECT AVG(uria) INTO r FROM tb;
    -> RETURN r;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

デリミタを戻してから作成したストアドファンクションを実行してみると

mysql> delimiter ;
mysql> select fu2();
+---------------+
| fu2()         |
+---------------+
| 116.727272727 |
+---------------+
1 row in set (0.00 sec)

ちゃんと実行できる。

『基礎からのMySQL』にはこのことに関する記述はなかった。

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿