ErrCode с "Выбрать в выходной файл с переменной" - сбивает права доступа
Предыстория: я работаю с phpMyAdmin (MySQL Workbench) в базе данных mysql. Я пишу некоторый код PHP для импорта данных в БД и выполняю это с помощью планировщика задач Windows. <= это работает отлично!
Теперь я хочу экспортировать некоторые данные в файл в папке Windows. Сначала я пишу код SQL в phpMyAdmin, чтобы увидеть некоторую информацию об отладке. <= это где проблема возникает.
Моя тема: я хочу экспортировать некоторые столбцы моей БД. Моя цель - поставить переменную CURRENT_TIMESTAMP
в имени файла. Для этого я использую Concat
заявление. Мой код (размещен ниже), получает результат следующей ошибки:
Не удается создать / записать в файл "C:\Temp\Export\2018-08-08 09:21:27.txt" (код ошибки: 13 "Отказано в доступе")
Самое смешное, если я заменю переменную CURRENT_TIMESTAMP
например, "Hello World", нет ошибки, и мой файл создан в папке.
Вот мой код:
*set @sql = concat("SELECT `LS_ID_Nr`,
`Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`,
`Umstellzeit`,
`Produktionszeit`,
`Teilmeldung`,
`Fertigmeldung` INTO OUTFILE 'C:/Temp/Export/",CURRENT_TIMESTAMP,".txt' fields terminated by ';' lines terminated by '\r\n' From praemie where Proof_P = 0");
prepare s1 from @sql;
execute s1;
DROP PREPARE s1;
UPDATE praemie SET Proof_P = 1 WHERE Proof_P = 0;*
У кого-нибудь есть идея, почему существует Permission Error
с использованием переменной? Заранее спасибо!
1 ответ
Ooooohh....
Я получаю это сейчас! Проблема в том, что окна не обрабатывают ":" в именах файлов. Поэтому я должен отредактировать код с помощью оператора Date_Format следующим образом:
set @sql =
concat("SELECT `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`,
`Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung`
INTO OUTFILE 'C:/Temp/Export/Test - ", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')," - Test.txt'
fields terminated by ';'
lines terminated by '\r\n'
From praemie where Proof_P = 0")