Eine schnelle Antwort, bei der Sie keine Konfigurationsdateien bearbeiten müssen (und auf anderen Betriebssystemen sowie unter Windows funktioniert), besteht darin, einfach das Verzeichnis zu finden, in dem Sie speichern dürfen, indem Sie Folgendes verwenden:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
Und stellen Sie dann sicher, dass Sie dieses Verzeichnis in Ihrem SELECT
verwenden INTO OUTFILE
der Anweisung Klausel:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Originalantwort
Ich habe das gleiche Problem seit dem Upgrade von MySQL 5.6.25 auf 5.6.26.
In meinem Fall (unter Windows) zeigt mir ein Blick auf den MySQL56-Windows-Dienst, dass die Options-/Einstellungsdatei, die beim Start des Dienstes verwendet wird, C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
Unter Linux sind die beiden häufigsten Speicherorte /etc/my.cnf
oder /etc/mysql/my.cnf
.
Wenn ich diese Datei öffne, kann ich sehen, dass die Datei secure-file-priv
Option wurde unter [mysqld]
hinzugefügt Gruppe in dieser neuen Version von MySQL Server mit einem Standardwert:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Sie könnten dies kommentieren (wenn Sie sich in einer Nicht-Produktionsumgebung befinden) oder mit dem Ändern der Einstellung experimentieren (vor kurzem musste ich secure-file-priv =""
festlegen um die Standardeinstellung zu deaktivieren). Vergessen Sie nicht, den Dienst neu zu starten, nachdem Sie Änderungen vorgenommen haben.
Alternativ können Sie versuchen, Ihre Ausgabe im zulässigen Ordner zu speichern (der Speicherort kann je nach Installation variieren):
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'
Es ist üblicher, kommagetrennte Werte mit FIELDS TERMINATED BY ','
zu verwenden . Siehe unten für ein Beispiel (das auch einen Linux-Pfad zeigt):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';