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

la función load_file no funciona en mysql

Un extracto rápido de la documentación de LOAD_FILE() Función MySQL:

COMO puede ver, hay innumerables razones para llamar a LOAD_FILE() falla:

  1. El archivo debe estar presente en la computadora donde se ejecuta el servidor MySQL. Esta no siempre es la misma computadora en la que se ejecuta el script PHP (y esto sucede por razones de seguridad). Si se ejecutan en diferentes computadoras, lo más probable es que no puedas usar LOAD_FILE() . Caso cerrado.

    En teoría podrías usar FTP o SFTP para transferir el archivo a la computadora donde se ejecuta MySQL, pero por las mismas razones de seguridad, probablemente no tenga acceso a esa computadora.

  2. Suponiendo que en su caso PHP y MySQL se ejecutan en la misma computadora, /images/picture.jpg es el componente de ruta de la URL, no una ruta en el sistema de archivos. Puede usar dirname() y __DIR__ para componer la ruta a las images directorio a partir de la ruta del script actual.

  3. El usuario que utilice para conectarse al servidor MySQL debe tener el FILE privilegio. El privilegio se otorga al usuario por un DBA.

  4. El archivo debe ser legible por todos. Esta es la parte más fácil. Cuando ejecutas ls -l en el archivo, los últimos tres símbolos en la columna de derechos de archivo deben ser rw- o r-- (no tiene sentido tener el bit ejecutable establecido).

  5. El valor predeterminado de max_allowed_packet la variable del sistema es 4 MiB pero un DBA puede cambiarlo. Puede ejecutar SELECT @@max_allowed_packet FROM dual para averiguar su valor actual.

  6. Si el secure_file_priv la variable del sistema está configurada, entonces la ruta que proporcione debe ser relativa a este directorio. Nuevamente, puede ejecutar SELECT @@secure_file_priv FROM dual para encontrar su valor actual.