SQLSTATE [HY000] [2002] Nessun errore di file o directory


14

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.


L'ho risolto cambiando la stringa di connessione, assicurati che il tuo mysql sia acceso e che tutte le tabelle esistano nel database.
Touqeer Shafi,

Risposte:


12

Ho avuto lo stesso problema durante l'installazione di Magento 2.1.0 con PHP 7.0.13.
Ho potuto risolvere questo problema impostando il nome host del database come 127.0.0.1 anziché localhost .


Dove dovrebbe essere fatto?
joeybab3

all'interno ./app/etc/env.php
Jino

10

Se il server elencato in app/etc/local.xmlè localhoste 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.socko qualsiasi file di socket è impostato in my.cnftemporanea 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.


6

impostare il nome host del database come 127.0.0.1 anziché localhost.


2

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



0

Assicurati di modificare l' app / etc / local.xml correttamente. Se non hai prefissi per le tue tabelle assicurati che la riga corretta sia:

<table_prefix><![CDATA[]]></table_prefix>

NON

<table_prefix>{{db_prefix}}</table_prefix>

0

Questo è comunemente causato da una diversa istanza di PHP utilizzata dalla riga di comando di PHP rispetto al web server. In particolare, mysql.sockpotrebbe essere configurato in modo errato se questo è il caso.

Per determinare se stai usando o meno un'istanza di PHP:

  1. Accedi al tuo server Magento.
  2. 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.inisi trova.

  1. Se non l'hai già fatto, configura un phpinfo.phpsul tuo server web.
  2. Confrontare il valore di Loaded file di configurazione da phpinfo.phpcon quello da php -i.

phpinfo.phpmostra il php.inifile 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.


Questo può succedere - penso di trovarmi di fronte adesso. Ma perché? Qualche idea specifica su cosa controllare in questi file ini?
VladFr

4
Piuttosto puoi fornire un po 'di cortesia a questa pagina devdocs.magento.com/guides/v2.0/install-gde/trouble/php/…
Shan

0

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 .


0

Ottengo lo stesso errore "SQLSTATE [HY000] [2002] Nessun file o directory". E ho scoperto che il servizio MySQL è stato interrotto. Ho iniziato il mio servizio MySQL e funziona perfettamente.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.