我有一个非常简单的查询,它工作正常:
SELECT *
FROM images i
INNER JOIN v_images_stats s
ON i.id = s.id
我最终创建了SELECT *
重复的列名,所以我将查询编辑得更具体,并忽略重复的列名,但 MySQL 会抛出 #1356 错误:
SELECT i.is as id, s.id as imageid
FROM images i
INNER JOIN v_images_stats s
ON i.id = s.id
#1356 - 查看 'events.v_image_stats' 引用无效的表或列或函数或视图的定义者/调用者缺乏使用它们的权限
v_image_stats 视图以及它所基于的基础视图和表具有正确的权限,我完全糊涂了。
我正在使用 MySQL 5.6 和 phpmyadmin 来创建和管理视图,我也在 Phalcon 框架中通过 PHP PDO 访问数据库,但我很确定这是 MySQL 问题而不是其他任何问题。
感激地收到任何帮助。
我最初发布了 SHOW CREATE VIEW 的完整输出,但它太冗长了,这是我可以创建的最简单的示例来重新创建问题:
CREATE ALGORITHM=UNDEFINED DEFINER=`events`@`localhost` SQL SECURITY DEFINER VIEW `v_image_stats` AS
(
select it.*, 1 AS `my_alias`
from `v_image_totals` `it`
order by `my_alias` asc)
)
如果我在 FROM 子句中使用表而不是视图,它也会失败。