6

我有一个非常简单的查询,它工作正常:

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 子句中使用表而不是视图,它也会失败。

4

1 回答 1

3

这似乎是一个影响 MySQL 5.6.10 及更高版本的错误(我尚未针对 MySQL 5.7 进行测试)。我已经提出了 MySQL 的错误,因此可以跟踪并希望修复: http ://bugs.mysql.com/bug.php?id=69678

请参阅评论以获取有效的解决方法。

于 2013-07-05T14:27:11.403 回答