sql >> Database teknologi >  >> RDS >> Mysql

Fejlkode:1290. MySQL-serveren kører med --secure-file-priv indstillingen, så den kan ikke udføre denne sætning

Et hurtigt svar, som ikke kræver, at du redigerer nogen konfigurationsfiler (og fungerer på andre operativsystemer såvel som Windows), er at finde den mappe, som du har tilladelse til at gemme i:

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

Og sørg derefter for at bruge den mappe i din SELECT sætningens 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'

Oprindeligt svar

Jeg har haft det samme problem siden opgraderingen fra MySQL 5.6.25 til 5.6.26.

I mit tilfælde (på Windows), ser jeg på MySQL56 Windows-tjenesten, at den fil med indstillinger/indstillinger, der bruges, når tjenesten starter, er C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

På linux er de to mest almindelige placeringer /etc/my.cnf eller /etc/mysql/my.cnf .

Ved at åbne denne fil kan jeg se, at secure-file-priv indstillingen er blevet tilføjet under [mysqld] gruppe i denne nye version af MySQL Server med en standardværdi:

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

Du kan kommentere dette (hvis du er i et ikke-produktionsmiljø), eller eksperimentere med at ændre indstillingen (for nylig var jeg nødt til at indstille secure-file-priv ="" for at deaktivere standarden). Glem ikke at genstarte tjenesten efter at have foretaget ændringer.

Alternativt kan du prøve at gemme dit output i den tilladte mappe (placeringen kan variere afhængigt af 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 er mere almindeligt at have kommaseparerede værdier ved at bruge FELTER TERMINERET AF ',' . Se nedenfor for et eksempel (som også viser en Linux-sti):

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


  1. Hvad er den bedste måde at teste SQL Server-forbindelse programmatisk?

  2. En restaurantleveringsdatamodel

  3. XAMPP - MySQL lukning uventet

  4. Eksempler på konvertering af 'dato' til 'datetime2' i SQL Server (T-SQL)