Si è verificato un errore durante l'elaborazione della tua richiesta
SQLSTATE [HY000] [2002] Nessun file o directory
Ottenere l'errore di cui sopra per favore qualcuno mi fornisce la soluzione per risolvere questo.
Si è verificato un errore durante l'elaborazione della tua richiesta
SQLSTATE [HY000] [2002] Nessun file o directory
Ottenere l'errore di cui sopra per favore qualcuno mi fornisce la soluzione per risolvere questo.
Risposte:
Se il server elencato in app/etc/local.xml
è localhost
e questo errore viene visualizzato nel log degli errori di Magento, ma Magento ancora sta funzionando bene, poi MySQL è stato riavviato e la presa /tmp/mysql.sock
o qualsiasi file di socket è impostato in my.cnf
temporanea scomparsa.
Poiché manca, il connettore mysql DOP riporta SQLSTATE[HY000] [2002] No such file or directory
Se ricevi continuamente questo errore e non hai accesso a Magento a parte la pagina Errore di eccezione, allora mysql si è arrestato in modo anomalo e hai bisogno del tuo provider di hosting per scoprire perché e riavviare mysql.
Questo può succedere anche se il tuo filesystem è pieno ... df -h 1st ... ovviamente, prima di tutto dovresti ricevere avvisi prima ...
mysqld non funzionerà normalmente e sarebbe in modalità "sicura"
HTH SNS
Ho avuto lo stesso problema e ho usato di seguito per selezionare quale php deve usare. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Consulta i documenti ufficiali: SQLSTATE [HY000] [2002] Nessun file o directory
Questo è comunemente causato da una diversa istanza di PHP utilizzata dalla riga di comando di PHP rispetto al web server. In particolare, mysql.sock
potrebbe essere configurato in modo errato se questo è il caso.
Per determinare se stai usando o meno un'istanza di PHP:
Immettere il comando seguente:
php -i | grep 'php.ini'
Ciò determina le impostazioni utilizzate dall'interfaccia della riga di comando (CLI) di PHP. Nota dove php.ini
si trova.
phpinfo.php
sul tuo server web.phpinfo.php
con quello da php -i
.phpinfo.php
mostra il php.ini
file utilizzato dal tuo server web. Se è diverso da quello che c'è in PHPphp.ini
, devi rendere coerenti tutte le impostazioni di PHP sia per la CLI di PHP che per il web server.
Per ulteriori dettagli, consultare la documentazione fornita con il server Web.
Ho diverse versioni di PHP disponibili tramite la shell: digitando php e premendo tab mostra quali sono a conoscenza del mio completamento automatico.
Per me, PHP 5.4, 5.5 e 5.6 funzionavano tutti bene, ma PHP 7 non trovava il mysql.sock e andava in crash con "SQLSTATE [HY000] [2002] Nessun errore di file o directory" discusso in questa domanda .
# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-5.6.20
# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-7.0.8
Per vedere dove il tuo server mysql ha il suo socket, usa questo comando:
cat /etc/mysql/my.cnf | grep socket
Nel mio caso, con Percona Mysql installato nel mio sistema vagabondo il file socket calzino è vissuto qui:
/var/run/mysqld/mysqld.sock
(nota che si chiama mysqld non semplicemente mysql )
Ho diverse versioni di php tra cui scegliere e questi comandi mi hanno mostrato quali avevano problemi e quali andavano bene:
La risposta per me è stata semplicemente quella di includere il codice nello script del provisioner vagabondo per creare un collegamento simbolico tra /tmp/mysql.sock e /var/run/mysqld/mysqld.sock
if [ ! -L /tmp/mysql.sock ]; then
echo "Creating symbolic link for php 7 to connect to mysql.sock"
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi
Con il nuovo symlink in atto, lo script di test fornito prima ora funziona perfettamente per tutte le versioni di PHP e posso usare localhost nel mio codice invece di dover fornire l' indirizzo IP 127.0.0.1 .
Questo sembra essere un problema di versione di PHP errato, devi selezionare quale php deve usare per eseguire il comando come segue:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
PS: sopra l'esempio è per MAC, puoi farlo in modo simile anche per Windows o Unix.