sql >> Databasteknik >  >> RDS >> Mysql

load_file-funktionen fungerar inte i mysql

Ett snabbt utdrag ur dokumentationen för LOAD_FILE() MySQL-funktion:

SOM du kan se finns det många anledningar till att du ringer till LOAD_FILE() misslyckas:

  1. Filen måste finnas på datorn där MySQL-servern körs. Det här är inte alltid samma dator som den där PHP-skriptet körs (och detta sker av säkerhetsskäl). Om de körs på olika datorer kan du antagligen inte använda LOAD_FILE() . Ärendet avslutat.

    I teorin kan du använda FTP eller SFTP för att överföra filen till datorn där MySQL körs men av samma säkerhetsskäl har du förmodligen inte tillgång till den datorn.

  2. Förutsatt att i ditt fall både PHP och MySQL körs på samma dator, /images/picture.jpg är sökvägskomponenten i URL:en, inte en sökväg i filsystemet. Du kan använda dirname() och __DIR__ för att skapa sökvägen till bilderna katalog som börjar från sökvägen till det aktuella skriptet.

  3. Användaren du använder för att ansluta till MySQL-servern måste ha FIL privilegium. Behörigheten ges till användaren av en DBA.

  4. Filen måste vara läsbar för alla. Detta är den enklaste delen. När du kör ls -l på filen måste de tre sista symbolerna i kolumnen med filrättigheter vara rw- eller r-- (det är ingen idé att ha den körbara biten inställd).

  5. Standardvärdet för max_allowed_packet systemvariabeln är 4 MiB men en DBA kan ändra det. Du kan köra SELECT @@max_allowed_packet FROM dual för att ta reda på dess nuvarande värde.

  6. Om secure_file_priv systemvariabeln är inställd så måste sökvägen du anger vara relativ till denna katalog. Återigen kan du köra SELECT @@secure_file_priv FROM dual för att hitta dess nuvarande värde.




  1. org.postgresql.util.PSQLE Undantag:FEL:kunde inte serialisera åtkomst på grund av läs-/skrivberoenden mellan transaktioner

  2. Varning:Ogiltigt argument har angetts för foreach() in

  3. MySQL infogar inte ett snedstreck

  4. MySQL Ordna efter fält och föräldrar