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';