2016-05-23 12 views
1

私はmysqlに新しいので、多分あなたの一部に私の質問は素朴に見えます。MYSQLビューを作成するためのトラブルシューティング

私は、データベース内のテーブルを作成するには、このクエリを持っている(ここでfiddleがある):

CREATE TABLE `hydrants log` (
    `TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `ID` int(8) NOT NULL, 
    `TRIG` int(1) NOT NULL, 
    `VALUE` int(4) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

も、私はビューを作成するには、このクエリを持っている:

CREATE ALGORITHM=UNDEFINED DEFINER=`geo`@`%` SQL SECURITY DEFINER VIEW `hydrants_log_maxtime` 
AS select `hydrants log`.`ID` AS `id`,`hydrants log`.`TRIG` AS `trig`,`hydrants log`.`VALUE` AS `value`,max(`hydrants log`.`TIME`) AS `time` from `hydrants log` group by `hydrants log`.`ID`; 

私はそれを作成しようとするとSQLのフィドル。私はこのエラーを取得する:

Access denied; you need (at least one of) the SUPER privilege(s) for this operation. 

私はこの行に問題を推測:

UNDEFINED DEFINER=`geo`@`%` SQL SECURITY DEFINER VIEW `hydrants_log_maxtime` 

は、だから私の質問は、私は上記のビューを作成するビューのクエリを変更することができる方法ですか?

答えて

1

私は、問題はDEFINER=`geo`@`%`のビューのパラメータにあると思います。 sqlfiddleのMySQLデータベースにはそのようなユーザーはなく、ビュー定義者として割り当てることはできません。その他のパラメータはすべて動作する必要があります。
SQL SECURITY DEFINERのような制限は、ユーザーが1人しかなく、新規を追加したり既存のものを編集することができないため、sqlfiddleでは機能しません。このパラメータを指定したクエリは機能しますが、使用されません。

+0

Andrew、このDEFINER = geo @% ''をクエリから削除するだけですか? – Michael

+0

はい、私にとっては、MySQL 5.6ではsqlfiddleで動作します。 – Andrew

関連する問題