sql >> Databáze >  >> RDS >> Mysql

Kód chyby:1290. Server MySQL běží s volbou --secure-file-priv, takže nemůže provést tento příkaz

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';


  1. Uložená procedura Oracle:vrátí sadu výsledků i parametry out

  2. Problém při načítání záznamů s prázdným polem

  3. Jak opravit nesprávnou hodnotu řetězce v MySQL

  4. Seznam parametrů NLS v databázi Oracle