Szybka odpowiedź, która nie wymaga edytowania żadnych plików konfiguracyjnych (i działa w innych systemach operacyjnych, a także w Windows), to po prostu znalezienie katalogu, w którym możesz zapisać za pomocą:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
A następnie upewnij się, że używasz tego katalogu w swoim SELECT
INTO OUTFILE
instrukcji klauzula:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Oryginalna odpowiedź
Mam ten sam problem od czasu aktualizacji z MySQL 5.6.25 do 5.6.26.
W moim przypadku (w systemie Windows), patrząc na usługę Windows MySQL56, widzę, że plik opcji/ustawień, który jest używany podczas uruchamiania usługi, to C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
W Linuksie dwie najpopularniejsze lokalizacje to /etc/my.cnf
lub /etc/mysql/my.cnf
.
Otwierając ten plik widzę, że secure-file-priv
opcja została dodana pod [mysqld]
w tej nowej wersji MySQL Server z domyślną wartością:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Możesz to skomentować (jeśli jesteś w środowisku nieprodukcyjnym) lub poeksperymentować ze zmianą ustawień (ostatnio musiałem ustawić secure-file-priv =""
aby wyłączyć domyślne). Nie zapomnij ponownie uruchomić usługi po wprowadzeniu zmian.
Alternatywnie możesz spróbować zapisać dane wyjściowe w dozwolonym folderze (lokalizacja może się różnić w zależności od instalacji):
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'
Częściej stosuje się wartości oddzielone przecinkami przy użyciu FIELDS TERMINATED BY ','
. Zobacz poniżej przykład (pokazuje również ścieżkę Linuksa):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';