Et hurtigt svar, som ikke kræver, at du redigerer nogen konfigurationsfiler (og fungerer på andre operativsystemer såvel som Windows), er at finde den mappe, som du har tilladelse til at gemme i:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
Og sørg derefter for at bruge den mappe i din SELECT
sætningens 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'
Oprindeligt svar
Jeg har haft det samme problem siden opgraderingen fra MySQL 5.6.25 til 5.6.26.
I mit tilfælde (på Windows), ser jeg på MySQL56 Windows-tjenesten, at den fil med indstillinger/indstillinger, der bruges, når tjenesten starter, er C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
På linux er de to mest almindelige placeringer /etc/my.cnf
eller /etc/mysql/my.cnf
.
Ved at åbne denne fil kan jeg se, at secure-file-priv
indstillingen er blevet tilføjet under [mysqld]
gruppe i denne nye version af MySQL Server med en standardværdi:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Du kan kommentere dette (hvis du er i et ikke-produktionsmiljø), eller eksperimentere med at ændre indstillingen (for nylig var jeg nødt til at indstille secure-file-priv =""
for at deaktivere standarden). Glem ikke at genstarte tjenesten efter at have foretaget ændringer.
Alternativt kan du prøve at gemme dit output i den tilladte mappe (placeringen kan variere afhængigt af 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 er mere almindeligt at have kommaseparerede værdier ved at bruge FELTER TERMINERET AF ','
. Se nedenfor for et eksempel (som også viser en Linux-sti):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';