Mysql
 sql >> база данни >  >> RDS >> Mysql

Код на грешка:1290. MySQL сървърът работи с опцията --secure-file-priv, така че не може да изпълни този израз

Бърз отговор, който не изисква от вас да редактирате никакви конфигурационни файлове (и работи на други операционни системи, както и на Windows), е просто да намерите директорията, която ви е позволено да запишете, като използвате:

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

След това се уверете, че използвате тази директория във вашия SELECT изявлението INTO OUTFILE клауза:

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

Оригинален отговор

Имах същия проблем след надстройването от MySQL 5.6.25 на 5.6.26.

В моя случай (в Windows), гледането на услугата MySQL56 на Windows ми показва, че файлът с опции/настройки, който се използва при стартиране на услугата, е C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

В Linux двете най-често срещани местоположения са /etc/my.cnf или /etc/mysql/my.cnf .

Отваряйки този файл, виждам, че secure-file-priv опцията е добавена под [mysqld] група в тази нова версия на MySQL Server със стойност по подразбиране:

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Качвания"

Можете да коментирате това (ако сте в непроизводствена среда) или да експериментирате с промяна на настройката (наскоро трябваше да задам secure-file-priv ="" за да деактивирате по подразбиране). Не забравяйте да рестартирате услугата, след като направите промени.

Като алтернатива можете да опитате да запазите изхода си в разрешената папка (местоположението може да варира в зависимост от вашата инсталация):

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'

По-често се срещат стойности, разделени със запетая, като се използва ПОЛЕТА, ПРЕКРАЩАНИ С ',' . Вижте по-долу за пример (също показващ Linux път):

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. Как да отрежете първите три знака въз основа на първата буква (израз), преди да се вмъкнат в базата данни

  2. IF синтактична грешка

  3. Как мога да вмъкна данни в MySQL база данни?

  4. Не може да се покажат стойности, разделени със запетая, в таблица

  5. Оптимизиране на производителността на MySQL:подреждане по поле за дата и час