Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kod błędu:1290. Serwer MySQL działa z opcją --secure-file-priv, więc nie może wykonać tej instrukcji

Szybka odpowiedź, która nie wymaga edytowania żadnych plików konfiguracyjnych (i działa w innych systemach operacyjnych, a także w Windows), to po prostu znalezienie katalogu, w którym możesz zapisać za 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 następnie upewnij się, że używasz tego katalogu w swoim SELECT INTO OUTFILE instrukcji klauzula:

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

Oryginalna odpowiedź

Mam ten sam problem od czasu aktualizacji z MySQL 5.6.25 do 5.6.26.

W moim przypadku (w systemie Windows), patrząc na usługę Windows MySQL56, widzę, że plik opcji/ustawień, który jest używany podczas uruchamiania usługi, to C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

W Linuksie dwie najpopularniejsze lokalizacje to /etc/my.cnf lub /etc/mysql/my.cnf .

Otwierając ten plik widzę, że secure-file-priv opcja została dodana pod [mysqld] w tej nowej wersji MySQL Server z domyślną wartością:

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

Możesz to skomentować (jeśli jesteś w środowisku nieprodukcyjnym) lub poeksperymentować ze zmianą ustawień (ostatnio musiałem ustawić secure-file-priv ="" aby wyłączyć domyślne). Nie zapomnij ponownie uruchomić usługi po wprowadzeniu zmian.

Alternatywnie możesz spróbować zapisać dane wyjściowe w dozwolonym folderze (lokalizacja może się różnić w zależności od instalacji):

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'

Częściej stosuje się wartości oddzielone przecinkami przy użyciu FIELDS TERMINATED BY ',' . Zobacz poniżej przykład (pokazuje również ścieżkę Linuksa):

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szukasz prostego wyszukiwania pełnotekstowego? Wypróbuj MySQL InnoDB + CakePHP z Word Stemming

  2. jak dodać datę (DateTime.now) do bazy mySql w C#

  3. MYSQL Data Godzina Od zaokrąglenia do najbliższej godziny

  4. Jak zmienić nazwę indeksu w MySQL?

  5. Importuj CSV lub XML do MySQL