Rychlá odpověď, která nevyžaduje úpravu žádných konfiguračních souborů (a funguje na jiných operačních systémech i na Windows), je pouze najít adresář, do kterého můžete ukládat 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 pak se ujistěte, že používáte tento adresář ve vašem SELECT
příkazu INTO OUTFILE
klauzule:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Původní odpověď
Měl jsem stejný problém od upgradu z MySQL 5.6.25 na 5.6.26.
V mém případě (ve Windows) mi při pohledu na službu MySQL56 Windows ukazuje, že soubor možností/nastavení, který se používá při spuštění služby, je C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
kód>
V linuxu jsou dvě nejběžnější umístění /etc/my.cnf
nebo /etc/mysql/my.cnf
.
Po otevření tohoto souboru vidím, že secure-file-priv
možnost byla přidána pod [mysqld]
skupina v této nové verzi serveru MySQL s výchozí hodnotou:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Můžete to okomentovat (pokud jste v neprodukčním prostředí), nebo experimentovat se změnou nastavení (nedávno jsem musel nastavit secure-file-priv = ""
za účelem deaktivace výchozího nastavení). Po provedení změn nezapomeňte službu restartovat.
Případně můžete zkusit uložit výstup do povolené složky (umístění se může lišit v závislosti na vaší instalaci):
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'
Je běžnější mít hodnoty oddělené čárkami pomocí FIELDS TERMINATED BY ','
. Níže je uveden příklad (také ukazuje cestu pro Linux):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';