sql >> Databáze >  >> RDS >> Mysql

Funkce load_file nefunguje v mysql

Krátký výňatek z dokumentace LOAD_FILE() Funkce MySQL:

Jak vidíte, existuje nespočet důvodů, proč voláte LOAD_FILE() selže:

  1. Soubor musí být přítomen na počítači, kde běží MySQL server. Ne vždy se jedná o stejný počítač jako ten, na kterém běží PHP skript (a to se děje z bezpečnostních důvodů). Pokud běží na různých počítačích, pak s největší pravděpodobností nemůžete použít LOAD_FILE() . Případ uzavřen.

    Teoreticky můžete použít FTP nebo SFTP přenést soubor do počítače, kde běží MySQL, ale ze stejných bezpečnostních důvodů k tomuto počítači pravděpodobně nemáte přístup.

  2. Za předpokladu, že ve vašem případě běží PHP i MySQL na stejném počítači, /images/picture.jpg je komponenta cesty adresy URL, nikoli cesta v systému souborů. Můžete použít dirname() a __DIR__ vytvořte cestu k images adresář začínající od cesty aktuálního skriptu.

  3. Uživatel, kterého používáte k připojení k serveru MySQL, musí mít FILE privilegium. Toto oprávnění uživateli uděluje správce databází.

  4. Soubor musí být čitelný pro všechny. Toto je ta nejjednodušší část. Když spustíte ls -l na souboru musí být poslední tři symboly ve sloupci práv souboru rw- nebo r-- (nemá smysl mít nastavený spustitelný bit).

  5. Výchozí hodnota max_allowed_packet systémová proměnná je 4 MiB ale DBA to může změnit. Můžete spustit SELECT @@max_allowed_packet FROM dual zjistit jeho aktuální hodnotu.

  6. Pokud secure_file_priv je nastavena systémová proměnná, pak cesta, kterou zadáte, musí být relativní k tomuto adresáři. Opět můžete spustit SELECT @@secure_file_priv FROM dual zjistit jeho aktuální hodnotu.




  1. MYSQL vlevo Připojte poslední řádek výsledku

  2. PostgreSQL - Filtrování období

  3. Jak odstranit záznam MySQL po určité době

  4. Jak změnit časové pásmo serveru MySQL