sql >> Databasteknik >  >> RDS >> Mysql

Felkod:1290. MySQL-servern körs med alternativet --secure-file-priv så den kan inte köra denna sats

Ett snabbt svar, som inte kräver att du redigerar några konfigurationsfiler (och fungerar på andra operativsystem såväl som Windows), är att bara hitta katalogen som du får spara till med:

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)

Och se till att du använder den katalogen i din SELECT uttalandets 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'

Ursprungligt svar

Jag har haft samma problem sedan jag uppgraderade från MySQL 5.6.25 till 5.6.26.

I mitt fall (på Windows), när jag tittar på MySQL56 Windows-tjänsten visar jag att alternativ-/inställningsfilen som används när tjänsten startar är C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

På linux är de två vanligaste platserna /etc/my.cnf eller /etc/mysql/my.cnf .

När jag öppnar den här filen kan jag se att secure-file-priv alternativet har lagts till under [mysqld] grupp i den här nya versionen av MySQL Server med ett standardvärde:

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uppladdningar"

Du kan kommentera detta (om du är i en icke-produktionsmiljö), eller experimentera med att ändra inställningen (nyligen var jag tvungen att ställa in secure-file-priv ="" för att inaktivera standard). Glöm inte att starta om tjänsten efter att du har gjort ändringar.

Alternativt kan du försöka spara dina utdata i den tillåtna mappen (platsen kan variera beroende på 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 är vanligare att ha kommaseparerade värden med FÄLT AVSLUTADE AV ',' . Se nedan för ett exempel (som även visar en Linux-sökväg):

SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    ESCAPED BY ''
    LINES TERMINATED BY '\n';


  1. Möjliggöra kundernas affärsinformation via datakataloger, affärsordlistor och datastyrning

  2. Klusterverifieringsverktyg som genererar ett stort antal xml-filer på filsystemet "/u01".

  3. Reproducera com.mysql.jdbc.exceptions.jdbc4.CommunicationsException med en inställning av Spring, hibernate och C3P0

  4. Multiple Table Select kontra JOIN (prestanda)