вы не можете использовать переменную для имени файла. подобно LIMIT, это должно быть буквальное значение, а не формула или переменная.
например, к какому имени файла будет добавлен файл?
SET @LOAD_TIME = UNIX_TIMESTAMP();
SET @OUTFILE = CONCAT(CONCAT('/tmp/outfile_', @LOAD_TIME), '.sql');
SELECT @OUTFILE = columnA
, columnB
FROM `tableA`
INTO OUTFILE @OUTFILE;
это ограничение аналогично ограничению на LIMIT. если бы выражения были разрешены в предложениях LIMIT, вы могли бы создавать запросы с непредсказуемым поведением. например, скажем, у вас есть таблица с 10 строками, а столбец a имеет значения от 1 до 10. Каковы результаты этого запроса?
SELECT *
FROM myTable
ORDER
BY a
LIMIT 10 - a
Основой для этого ограничения является: если вы можете вычислить предел, то вам следует явно рассчитать предел и затем построить запрос с литеральным значением. возможность выражения выражений типа 10 - a
делает план выполнения запроса НАМНОГО более сложным.