sql >> Base de Datos >  >> RDS >> Mysql

Código de error:1290. El servidor MySQL se está ejecutando con la opción --secure-file-priv, por lo que no puede ejecutar esta declaración

Una respuesta rápida, que no requiere que edites ningún archivo de configuración (y funciona en otros sistemas operativos además de Windows), es simplemente encontrar el directorio en el que puedes guardar usando:

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

Y luego asegúrese de usar ese directorio en su SELECT INTO OUTFILE de la declaración cláusula:

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

Respuesta original

He tenido el mismo problema desde que actualicé de MySQL 5.6.25 a 5.6.26.

En mi caso (en Windows), mirar el servicio MySQL56 de Windows me muestra que el archivo de opciones/configuraciones que se usa cuando se inicia el servicio es C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

En Linux, las dos ubicaciones más comunes son /etc/my.cnf o /etc/mysql/my.cnf .

Al abrir este archivo, puedo ver que secure-file-priv se ha agregado la opción en [mysqld] group en esta nueva versión de MySQL Server con un valor predeterminado:

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

Puede comentar esto (si está en un entorno que no es de producción) o experimentar cambiando la configuración (recientemente tuve que configurar secure-file-priv = "" para deshabilitar el predeterminado). No olvide reiniciar el servicio después de realizar cambios.

Alternativamente, puede intentar guardar su salida en la carpeta permitida (la ubicación puede variar según su instalación):

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'

Es más común tener valores separados por comas usando FIELDS TERMINATED BY ',' . Vea a continuación un ejemplo (que también muestra una ruta de Linux):

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