排除故障以创建MYSQL视图

时间:2016-05-23 08:02:08

标签: 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 个答案:

答案 0 :(得分:1)

我认为,问题出在DEFINER=`geo`@`%`视图参数中。在sqlfiddle的MySQL数据库中没有这样的用户,你不能将他指定为视图定义器。所有其他参数必须有效 此类限制(如SQL SECURITY DEFINER)也不适用于sqlfiddle,因为您只有一个用户,无法添加新用户或编辑现有用户。使用此参数进行查询将起作用,但它将不被使用。