Sie können für den Dateinamen keine Variable verwenden. Wie bei LIMIT muss es sich um einen literalen Wert handeln, nicht um eine Formel oder eine Variable.
z. B. unter welchem Dateinamen soll die Datei hier gespeichert werden?
SET @LOAD_TIME = UNIX_TIMESTAMP();
SET @OUTFILE = CONCAT(CONCAT('/tmp/outfile_', @LOAD_TIME), '.sql');
SELECT @OUTFILE = columnA
, columnB
FROM `tableA`
INTO OUTFILE @OUTFILE;
Dies ist eine ähnliche Einschränkung wie bei LIMIT. Wenn Ausdrücke in LIMIT-Klauseln erlaubt wären, könnten Sie Abfragen mit unvorhersehbarem Verhalten erstellen. Nehmen wir zum Beispiel an, Sie haben eine Tabelle mit 10 Zeilen und Spalte a hat die Werte 1 bis 10. Was ist die Ausgabe dieser Abfrage?
SELECT *
FROM myTable
ORDER
BY a
LIMIT 10 - a
Die Grundlage für diese Einschränkung ist: Wenn Sie den Grenzwert berechnen können, sollten Sie den Grenzwert explizit berechnen und dann die Abfrage mit dem Literalwert erstellen. 10 - a
die ausgewertet werden müssen, macht den Abfrageausführungsplan potenziell VIEL komplizierter.