Я выполняю запрос, который вычисляет на основе некоторых представлений и записывает результаты в файл. Это выглядит так:SELECT * INTO OUTFILE из представления не работает, но базовый запрос работает нормально INTO OUTFILE
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`
Это отлично работает. Я создал представление, основанное на этом запросе, но он не работает как замена, как я и ожидал. Вот "Создать вид" часть SHOW CREATE 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;
Я получил эту ошибку:
ERROR 1356 (HY000): View 'database_name.view_name' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
I «Я работаю от имени root, поэтому я не думаю, что есть какие-то проблемы с правами. Что может сделать этот запрос недопустимым в глазах MySQL? Я бегу версии 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
EDIT: Запуск SELECT * FROM view_name
возвращает записей, как ожидалось. Однако с тысячами строк и необходимостью форматирования я предпочел бы использовать INTO OUTFILE
.
Просьба показать определение вида. Вы также удалили «FIELDS TERMINATED» и т. Д., Правильно? – wallyk
Я действительно, да. Я добавил инструкцию create view, поэтому вам не нужно просто взять слово за это. Вы видите что-то странное? –
Все хорошо. Все, о чем я могу думать, состоит в том, что представление неверно определено путем ссылки на некоторые поля, которые не существуют. – wallyk