Ett snabbt svar, som inte kräver att du redigerar några konfigurationsfiler (och fungerar på andra operativsystem såväl som Windows), är att bara hitta katalogen som du får spara till med:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
Och se till att du använder den katalogen i din SELECT
uttalandets INTO OUTFILE
klausul:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Ursprungligt svar
Jag har haft samma problem sedan jag uppgraderade från MySQL 5.6.25 till 5.6.26.
I mitt fall (på Windows), när jag tittar på MySQL56 Windows-tjänsten visar jag att alternativ-/inställningsfilen som används när tjänsten startar är C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
På linux är de två vanligaste platserna /etc/my.cnf
eller /etc/mysql/my.cnf
.
När jag öppnar den här filen kan jag se att secure-file-priv
alternativet har lagts till under [mysqld]
grupp i den här nya versionen av MySQL Server med ett standardvärde:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uppladdningar"
Du kan kommentera detta (om du är i en icke-produktionsmiljö), eller experimentera med att ändra inställningen (nyligen var jag tvungen att ställa in secure-file-priv =""
för att inaktivera standard). Glöm inte att starta om tjänsten efter att du har gjort ändringar.
Alternativt kan du försöka spara dina utdata i den tillåtna mappen (platsen kan variera beroende på din installation):
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Det är vanligare att ha kommaseparerade värden med FÄLT AVSLUTADE AV ','
. Se nedan för ett exempel (som även visar en Linux-sökväg):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';