Документация показывает , что make_absolute
имеет необязательный второй параметр, который по умолчанию соответствует вашему текущему пути:
path absolute(const path& p, const path& base=current_path());
Попробуйте это без второго параметра и посмотрите, вернет ли он результаты, которые вы ищете.
Нет, перезаписать его невозможно. Из docs :
имя_файла не может быть существующим файлом, что, помимо прочего, предотвращает удаление таких файлов, как / etc / passwd и таблиц базы данных.
Возможно, было бы лучше использовать новое имя файла каждую ночь, так как наличие нескольких резервных копий означает, что вы можете восстановиться после проблем, которые существовали более суток. Затем вы можете поддерживать символическую ссылку, которая всегда указывает на последний полный CSV.
Почему не rm -f /home/sites/example.com/www/files/backup.csv
в скрипте, запущенном cron?
Вы можете запустить это изнутри mysql. Просто выйдите в оболочку с помощью \!
Например:
Mysql> \! rm -f /home/sites/example.com/www/files/backup.csv
Для такой работы я бы поместил ее в файл bash, удалил файл
#!/bin/bash
rm /path/to/backup.csv
./backup_sql_query.sh <<-- This contains the script to backup to CSV.
Чем лучше вариант - фактически добавить метку времени. В наши дни дисковое пространство недорогое.
Нет никакого способа.
Только одна возможная процедура, которую вы можете выполнить с помощью динамического оператора.
CREATE PROCEDURE export_dynamic(IN file_name char(64))
BEGIN
set @myvar = concat('SELECT * INTO OUTFILE ',"'",file_name,"'",' FROM Table1') ;
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
Deallocate prepare stmt1;
END;