我是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`
所以我的问题是如何更改视图查询以创建上面的视图?
答案 0 :(得分:1)
我认为,问题出在DEFINER=`geo`@`%`
视图参数中。在sqlfiddle的MySQL数据库中没有这样的用户,你不能将他指定为视图定义器。所有其他参数必须有效
此类限制(如SQL SECURITY DEFINER
)也不适用于sqlfiddle,因为您只有一个用户,无法添加新用户或编辑现有用户。使用此参数进行查询将起作用,但它将不被使用。