gpt4 book ai didi

mysql - 从 View 中 SELECT * INTO OUTFILE 不起作用,但基础查询工作正常 INTO OUTFILE

转载 作者:行者123 更新时间:2023-11-29 08:24:45 25 4
gpt4 key购买 nike

我正在运行一个查询,该查询根据某些 View 进行计算,并将结果写入文件。它看起来像这样:

select `v1`.`id` AS `id`,`v2`.`name` AS `name`,
`v2`.`nbr` AS `nbr`,
`v1`.`nbr` AS `total`,
(`v2`.`nbr` / `v1`.`nbr`) AS `percent`

INTO OUTFILE '/home/username/mysqldump/filename.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

from `v2` join `v1`

where `v2`.`id` = `v1`.`id`

效果很好。我基于此查询创建了一个 View ,但它不能像我预期的那样作为直接替换。这是 SHOW CREATE VIEW 的“创建 View ”部分:

 CREATE ALGORITHM=UNDEFINED  DEFINER=`user`@`localhost`
SQL SECURITY DEFINER
VIEW `view_name` AS
select `v1`.`id` AS `id`,
`v2`.`name` AS `name`,
`v2`.`nbr` AS `nbr`,
`v1`.`nbr` AS `total_pvs`,
(`v2`.`nbr` / `v1`.`nbr`) AS `percent`
from (`v2` join `v1`) where (`v2`.`id` = `v1`.`id`)

以下查询不起作用:

 SELECT * INTO OUTFILE '/home/username/mysqldump/filename.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM view_name;

我收到此错误:

错误 1356 (HY000): View “database_name.view_name”引用了无效的表、列或函数,或者 View 的定义者/调用者缺乏使用它们的权限

我以 root 身份运行,所以我认为不存在任何权限问题。在 MySQL 看来,是什么导致该查询无效?我正在运行版本 5.5.32-0ubuntu0.12.04.1 (Ubuntu)

编辑:运行 SELECT * FROM view_name 按预期返回记录。然而,由于有数千行,并且需要固定格式,我宁愿使用INTO OUTFILE

最佳答案

这个帖子有点老了,但它迄今为止对这个主题的少数( Unresolved )帖子进行了最好的介绍,所以这是我发现的:

正如您所猜测的,由于当您添加“到文件”部分时会出现错误,因此缺少访问文件的权限(是的,错误消息具有误导性)。

事实上,如果您授予 View 的定义者全局 FILE 权限,错误就会消失。 (这使得错误消息以第二种方式产生误导,因为看起来调用者权限在那里没有影响 - 尽管它们应该,恕我直言。)

关于mysql - 从 View 中 SELECT * INTO OUTFILE 不起作用,但基础查询工作正常 INTO OUTFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com