Если вы хотите добавить такие функции, как MAX , SUM в предложении выбора, вам нужно сделать getRawOne () или getRawMany () . Это даст вам грубый ответ:
getOneMaximumQuotationVersion() {
const query = this.createQueryBuilder("quotation");
query.select("MAX(quotation.quotationVersion)", "max");
// query.addSelect("MAX(quotation.quotationVersion)", "max");
return query.getRawOne();
}
Выходной файл создается процессом mysqld, не Вашим клиентским процессом. Поэтому выходной файл должен принадлежать uid и ценурозу процесса mysqld.
Можно избежать необходимости sudo для доступа к файлу при доступе к нему от процесса под uid или ценурозом, который может получить доступ к файлу. Другими словами, если mysqld создает файлы, принадлежавшие uid и ценурозу "mysql" / "mysql", то добавьте свою собственную учетную запись для группировки "mysql". Затем необходимо смочь получить доступ к файлу, если режим разрешения файла включает групповой доступ.
Править:
Вы удаляете файл в/tmp с режимом разрешения каталога rwxrwxrwt. Липкий бит ('т') означает, что можно удалить файлы, только если uid совпадает с владельцем файла, независимо от полномочий на файле или каталога.
При сохранении выходного файла в другом каталоге, который не имеет липкого набора битов, необходимо смочь удалить файл обычно.
Прочитайте эту выборку из страницы справочника для липкого (8):
ЛИПКИЕ КАТАЛОГИ
Каталог, чей 'липкий бит' установлен, становится каталогом только добавления, или, более точно, каталогом, в котором ограничивается удаление файлов. Файл в липком каталоге может только быть удален или переименован пользователем, если у пользователя есть разрешение записи для каталога, и пользователь является владельцем файла, владельцем каталога или суперпользователем. Эта функция полезно применяется к каталогам, таким как/tmp, который должен быть публично перезаписываем, но должен отрицать, что пользователи лицензия произвольно удаляют или переименовывают файлы друг друга.
Не используя "ВЫБОР... В OUTFILE" синтаксис, нет.
Необходимо выполнить запрос (т.е. клиент) как другой пользователь и перенаправить вывод. Например, отредактируйте свой crontab для выполнения следующей команды каждый раз, когда Вы хотите:
mysql db_schema -e 'SELECT col,... FROM table' > /tmp/outfile.txt
Это создаст /tmp/outfile.txt как пользователя, который является crontab, к которому Вы добавили команду.
Если у Вас есть другой пользователь, выполняет запрос от крона, он создаст файл как того пользователя.
Я просто делаю
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
и добавляю
/var/www/codeigniter/assets/download/* w,
и
sudo service mysql restart
И все, я могу легко ВЫБРАТЬ В OUTFILE
любое имя файла