Ich habe Drush zum ersten Mal installiert (möglicherweise liegt ein Konfigurationsfehler vor) und versuche, auf die neueste Kernversion von Drupal zu aktualisieren.
Drush gibt mir diesen Fehler - ich bin auf einer OSX-Box.
dev5:clientnamedirectory my.name$ drush pm-update projects drupal-7.25
<h1>Additional uncaught exception thrown while handling exception.</h1>
<h2>Original</h2><p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_get_installed_schema_version() (line 155 of /Users/my.name/Sites/proface/includes/install.inc).</p>
<h2>Additional</h2>
<p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in system_list() (line 165 of /Users/my.name/Sites/clientnamedirectory/includes/module.inc).</p><hr />
Drush command terminated abnormally due to an unrecoverable error.
Antworten:
So habe ich es auf macOS gelöst:
Quelle: Arbeiten mit Drush on Mamp .
quelle
Versuchen Sie in Ihrer Datenbankkonfiguration in der Datei settings.php für die Drupal-Site, den Host auf 127.0.0.1 anstelle von localhost zu ändern.
Ersetzen Sie den Standard: 'host' => 'localhost',
mit: 'host' => '127.0.0.1',
Ich hatte diesen Fehler unter OS X XAMPP, aber die Lösung sollte auch hier zutreffen. Wie Clive bereits erwähnte, handelt es sich um ein MySQL-Verbindungsproblem. Dieser Beitrag befasst sich mehr mit dem zugrunde liegenden Problem.
quelle
Erläuterung
Der PDOException - Fehler 2002 bedeutet, dass Ihre Drush keine Verbindung zum lokalen MySQL - Datenbankserver über die Socket - Datei (z. B.
/tmp/mysql.sock
) herstellen kann, wie in Ihrem konfiguriertphp.ini
.Dies hat eigentlich nicht viel mit sich selbst zu
drush
tun, es ist Ihre PHP-Konfiguration und dieser Fehler kann reproduziert werden durch:Fix
Wenn Ihr MySQL richtig funktioniert, stellen Sie sicher, dass diese beiden Dateien:
mysql_config --socket
oder:
mysqladmin variables | grep socket
php -i | grep -w default_socket
oder:
php -r 'phpinfo();' | grep -w default_socket
Matching und zeigt auf die gleiche Datei und beide existieren.
Wenn nicht, überprüfen Sie, welche richtig ist, indem Sie:
Beheben Sie das Problem mit einer der folgenden Lösungen:
Stellen Sie den symbolischen Link so ein, dass er auf den funktionierenden
mysql.sock
Unix-Socket verweist (für MAMP, siehe Antwort von Andrew ).Wenn Sie beispielsweise MAMP verwenden, können Sie einen symbolischen Link zum Standardspeicherort erstellen:
richtiger Weg von dir
pdo_mysql.default_socket
,mysql.default_socket
odermysqli.default_socket
in deinemphp.ini
geben
unix_socket
Siesettings.php
in Ihrer$databases
Variablen an, zFehlerbehebung
Andere Randfälle könnten sein:
Debuggen mit XDebug:
echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
drush -c init.php ev 'Database::getConnection("default", "default");'
xdebug.show_exception_trace=1
in Ihremxdebug.ini
sudo dtruss -fn mysqld
, unter Linux mitstrace
quelle
Ich benutze MAMP Pro und hatte das gleiche Problem. Der einfachste Weg, dies zu beheben, bestand darin, die folgende Zeile zu Ihrem $ database-Array in der settings.php-Datei hinzuzufügen.
In vollem Umfang sollte es so aussehen:
Der genaue Fehler, den ich bekommen habe, sah so aus:
Zusätzliche nicht erfasste Ausnahme, die während der Behandlung der Ausnahme ausgelöst wird.
Original
PDOException: SQLSTATE [HY000] [2002] Keine solche Datei oder kein solches Verzeichnis in drupal_is_denied () (Zeile 2193 von ...
Zusätzlich
PDOException: SQLSTATE [HY000] [2002] Keine solche Datei oder kein solches Verzeichnis in _registry_check_code () (Zeile 3477 von ...
Der Drush-Befehl wurde aufgrund eines nicht behebbaren Fehlers abnormal beendet.
quelle
Ich habe dies mit den folgenden Schritten gelöst, ähnlich den vorherigen Antworten, aber nicht mit denselben.
Füge einen Symlink hinzu:
Finden Sie die verwendete php.ini:
Fügen Sie die folgenden Einstellungen zu php.ini hinzu:
quelle
Dies liegt an einem Konfigurationsfehler in Ihren PHP / SQL-Konfigurationen. Irgendwo ist der Socket, den Ihr Webserver und die Befehlszeile verwenden, anders konfiguriert. Ich empfehle, Ihre MySQL-Konfiguration zu überprüfen, um festzustellen, welcher Unix-Socket verwendet wird, und dann sicherzustellen, dass in allen php.ini-Konfigurationen und -Kompilierungen derselbe Wert verwendet wird.
Wenn Sie die Konfiguration nicht reparieren können, sollten die folgenden Schritte funktionieren:
Wenn Ihnen das alles zu kompliziert erscheint, können Sie alternativ den Host in setting.php von localhost auf 127.0.0.1 ändern. Dadurch wird die Site langsamer, aber für eine Entwicklungssite ist sie möglicherweise nicht erkennbar oder wichtig. Für einen Produktionsstandort möchten Sie den Unix-Socket verwenden und sollten die Konfiguration sortieren.
quelle
Einen einfacheren / alternativen Weg gefunden, um drush auf einem Mac zu installieren:
Installieren Sie Homebrew, indem Sie es in ein eigenständiges Terminal einfügen
Fügen Sie dann Drush hinzu, indem Sie Folgendes vom selben Terminal ausführen
Der Drush-Status läuft jetzt einwandfrei.
quelle
Wenn Sie mit der MySQL.com-Installation von MySQL arbeiten, müssen Sie PHP nur auf den richtigen Speicherort für die
.sock
Datei verweisen .php.ini
Ergänzen / ändern Sie diese beiden Zeilen in Ihrer :Verwenden Sie diese Option, um den Speicherort Ihrer php.ini zu ermitteln (möglicherweise ist sie noch nicht vorhanden)
Wenn die
php.ini
Datei dort noch nicht vorhanden ist, erstellen Sie sie.quelle
Stimmen Sie mit anderen Antworten überein, dass Drupal den MySQL-Socket nicht finden kann. Die anderen Antworten halfen mir, waren jedoch für die Installation mit dem installierten offiziellen Oracle Mysql-Dienst unvollständig. Der Standardspeicherort der Datei mysql.sock. Hier ist eine Zusammenfassung meiner empfohlenen Antworten, abhängig von Ihrem Anwendungsfall:
Wenn Sie mysql verwenden, wie es im offiziellen MAMP-Paket enthalten ist, verwenden Sie die Antwort von @Andrew Alexander:
Für das offizielle Oracle MYSQL:
quelle
Bei einem MAMP 4-Setup wurde die Option "Diese Version in der Befehlszeile verfügbar machen" aktiviert.
quelle
Ich habe die folgende Nachricht im Terminal erhalten:
(MAMP PRO + PHP 7)
Ich habe das Problem mit Hilfe dieser Anleitung gelöst
quelle
Ich habe vergessen, dass mein lokales Mysql auf einer eindeutigen Portnummer ausgeführt wird, und war verwirrt, warum ich dies erhalten habe, bis ich meine Konfiguration auf einer anderen lokalen Site überprüft habe.
quelle