sql >> Database teknologi >  >> RDS >> Mysql

load_file-funktionen virker ikke i mysql

Et hurtigt uddrag fra dokumentationen af ​​LOAD_FILE() MySQL-funktion:

SOM du kan se, er der utallige grunde til dit opkald til LOAD_FILE() mislykkes:

  1. Filen skal være til stede på den computer, hvor MySQL-serveren kører. Dette er ikke altid den samme computer som den, hvor PHP-scriptet kører (og dette sker af sikkerhedsmæssige årsager). Hvis de kører på forskellige computere, kan du højst sandsynligt ikke bruge LOAD_FILE() . Sagen er afsluttet.

    I teorien kunne du bruge FTP eller SFTP at overføre filen til den computer, hvor MySQL kører, men af ​​samme sikkerhedsmæssige årsager har du sandsynligvis ikke adgang til den computer.

  2. Hvis du antager, at både PHP og MySQL kører på den samme computer, /images/picture.jpg er URL'ens stikomponent, ikke en sti på filsystemet. Du kan bruge dirname() og __DIR__ for at sammensætte stien til billederne mappe, der starter fra stien til det aktuelle script.

  3. Den bruger, du bruger til at oprette forbindelse til MySQL-serveren, skal have FIL privilegium. Rettigheden er givet til brugeren af ​​en DBA.

  4. Filen skal kunne læses af alle. Dette er den nemmeste del. Når du kører ls -l på filen skal de sidste tre symboler i kolonnen med filrettigheder være rw- eller r-- (det nytter ikke at have den eksekverbare bit indstillet).

  5. Standardværdien for max_allowed_packet systemvariablen er 4 MiB men en DBA kan ændre det. Du kan køre SELECT @@max_allowed_packet FROM dual for at finde ud af dens aktuelle værdi.

  6. Hvis secure_file_priv systemvariablen er indstillet, så skal stien du angiver være i forhold til denne mappe. Igen kan du køre SELECT @@secure_file_priv FROM dual for at finde dens aktuelle værdi.




  1. Hvordan RIGHT() virker i MariaDB

  2. Node.js MYSQL for at detektere INSERT/UPDATE fuldstændigheden af ​​en forespørgsel?

  3. Mærkelig SQL-undtagelse:Kolonne blev ikke fundet

  4. Problem med uploadstørrelse i PHP og MySql