sql >> Database >  >> RDS >> Mysql

Foutcode:1290. De MySQL-server wordt uitgevoerd met de optie --secure-file-priv, zodat deze instructie niet kan worden uitgevoerd

Een snel antwoord, waarvoor u geen configuratiebestanden hoeft te bewerken (en werkt zowel op andere besturingssystemen als op Windows), is om gewoon de map te vinden die u mag opslaan met:

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

En zorg er dan voor dat je die map gebruikt in je SELECT statement's INTO OUTFILE clausule:

SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
    FIELDS TERMINATED BY '#'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'

Oorspronkelijk antwoord

Ik heb hetzelfde probleem gehad sinds ik upgrade van MySQL 5.6.25 naar 5.6.26.

In mijn geval (in Windows), als ik naar de MySQL56 Windows-service kijk, zie ik dat het bestand met opties/instellingen dat wordt gebruikt wanneer de service wordt gestart, C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

Op linux zijn de twee meest voorkomende locaties /etc/my.cnf of /etc/mysql/my.cnf .

Als ik dit bestand open, zie ik dat de secure-file-priv optie is toegevoegd onder de [mysqld] groep in deze nieuwe versie van MySQL Server met een standaardwaarde:

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

U kunt dit commentaar geven (als u zich in een niet-productieomgeving bevindt), of experimenteren met het wijzigen van de instelling (onlangs moest ik secure-file-priv ="" instellen om de standaard uit te schakelen). Vergeet niet de service opnieuw te starten nadat u wijzigingen heeft aangebracht.

U kunt ook proberen uw uitvoer op te slaan in de toegestane map (de locatie kan variëren afhankelijk van uw installatie):

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'

Het is gebruikelijker om door komma's gescheiden waarden te gebruiken met FIELDS TERMINATED BY ',' . Zie hieronder voor een voorbeeld (met ook een Linux-pad):

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


  1. php/mysql postcode nabijheid zoeken

  2. Beperkingen tijdelijk uitschakelen (MS SQL)

  3. Python MySql Insert werkt niet

  4. B-Tree versus hash-tabel