Ich baue eine Webanwendung in Laravel 5. Die Anwendung soll "Kategorienamen" in einer MySQL-Datenbank speichern und ein Formular anzeigen, um neue "Kategorienamen" hinzuzufügen. Wenn ich den Befehl php artisan serve
ausführen und zu http: // localhost: 8000/admin/categories/ navigiere, erhalte ich die folgende Fehlermeldung:
PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
In einigen Beiträgen, die ich über den Stapelüberlauf gelesen habe, haben viele Benutzer, die diesen Fehler feststellen, die .env-Datei nicht ordnungsgemäß konfiguriert. Dadurch werden die Standardeinstellungen für das PHP -Datenobjekt (PDO) überschrieben, wie in der Datei database.php angegeben . Die .env-Datei ist unten definiert:
DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret
Der mysql-Schlüssel in der Datei database.php lautet:
'mysql' => [
'driver' => 'mysql',
'Host' => env('DB_Host', 'localhost'),
'database' => env('DB_DATABASE', 'Homestead'),
'username' => env('DB_USERNAME', 'Homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
Seltsamerweise kann ich eine Verbindung zur Datenbank herstellen, wenn ich ssh in meine virtuelle Maschine einführe und mysql -uhomestead -psecret Homestead
ausführe. Die Frage ist, warum kann Laravel keine Verbindung zu MySQL herstellen, wenn ich mich mit denselben Parametern direkt mit MySQL verbinden kann? Was könnte sonst den Zugang zu Laravel verweigern?
Ich habe die in der Homestead.yaml angegebene IP-Adresse von localhost in 192.168.10.10 geändert. Dann lief ich Homestead provision
und das schien das Problem zu beheben. Der Host-Computer kann localhost oder 127.0.0.1 nicht auflösen, da dies ihm bereits zugeordnet ist.
Ich habe das gleiche Problem mit Wampserver. Es hat für mich funktioniert:
Sie müssen diese Datei ändern: "C:\wamp\bin\mysql [mysql_version]\my.ini" Zum Beispiel: "C:\wamp\bin\mysql [mysql5.6.12]\my.ini"
Und ändern Sie den Standardport 3306 in 80. (Zeilen 20 und 27 in beiden) Port = 3306 To port = 80
Ich hoffe das ist hilfreich.
Gehen Sie dann in Ihr Control Panel und starten Sie Apache & MySQL Services.
warum kann Laravel keine Verbindung zu MySQL herstellen, wenn ich mich mit denselben Parametern direkt mit MySQL verbinden kann?
Komm schon, env('DB_Host', 'localhost')
ist nirgends gleich NULL
und env('DB_USERNAME', 'Homestead')
ist nirgends gleich Homestead
Sie können nicht "dasselbe" als solche Dinge bezeichnen, wie explizit angegebenes Literal, ein fehlender Parameter oder das Ergebnis einer Funktion! Das sind drei verschiedene Sachen!
Sie können "dasselbe" nur sagen, wenn Sie in beiden Fällen wörtlich - dieselben Parameter angeben:
mysql -hlocalhost -uhomestead -psecret Homestead
für die Shell und
'mysql' => [
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'Homestead',
'username' => 'Homestead',
'password' => 'secret',
für Laravel.
Ich hatte das gleiche Problem und las alle Antworten im Internet, aber keiner von ihnen half! Endlich die Antwort gefunden und ich hoffe, dass diese Lösung jemandem hilft.
Ich habe gerade meinen DB_PORT auf 33060
gesetzt und das Problem gelöst.
Gründe können sein:
Wenn Sie versuchen, auf die Datenbank von einem anderen Server zuzugreifen, dann ist das größte Problem mit dem Conman-Problem DB-Zugriff ist nur für localhost/127.0.0.1
Lösung: Sie können my.cnf
ändern (auf Ubuntu befindet sich wieder in /etc/mysql/my.cnf)
und kann Folgendes ändern:
bind-address = 0.0.0.0
oder
bind-address = SERVER_PUBLIC_IP_ADDRESS
Ich empfehle, einen DB-Benutzer anstelle von Root zu erstellen und die Root-Verwendung zu löschen, da es nicht sicher ist, DB-Zugriff von einer beliebigen IP-Adresse mit Root-Benutzer bereitzustellen.
Wenn Sie versuchen, eine DB von demselben Server zu verbinden:
Lösung: Verwenden Sie einfach TCP/IP anstelle des Unix-Sockets. Sie würden dies tun, indem Sie beim Herstellen der Verbindung 127.0.0.1 anstelle von localhost verwenden. Der Unix-Socket kann jedoch schneller und sicherer verwendet werden.
Nach den vorgenommenen Änderungen haben Sie den mysql-Dienst neu gestartet
Sudo service mysql restart
Ich habe mich verändert
DB_Host = localhost
zu
DB_Host = localhost: 3307
in der .env-Datei
Ich hatte das gleiche Problem einmal, aber in meinem eigenen Fall lief ich auf dem lokalen Server. Ich entdeckte später, dass der Fehler:
"PDOException with a message 'SQLSTATE[HY000] [2002]
Es konnte keine Verbindung hergestellt werden, da der Zielcomputer diese aktiv abgelehnt hat. "
ich habe Apache and MySQL in Xampp
Control Panel nicht gestartet, daher konnte die Anwendung das gewünschte Ergebnis nicht abrufen, da keine Koonection vorhanden war.
Sofort habe ich beide Apache and MySQL
in der Xampp-Systemsteuerung the error was fixed
gestartet. Ich hoffe, das funktioniert für Sie
Deaktivieren Sie in Windows einfach User Access Persimissions (UAC) .- open run - geben Sie msconfing ein und drücken Sie die Eingabetaste - Gehen Sie zu Tools und suchen Sie nach.UAC -. . -Starten Sie den PC neu
Denken Sie daran, es durch die Firewall zuzulassen, wenn Sie dazu aufgefordert werden.
In meinem Fall hatte ich die Adresse des VM wie die Voreinstellung des Homestead (192.168.10.10) in DB_Host
in die Datei .env geschrieben. Aber es funktioniert nur für artisan migrate
. Die Verwendung von Apps zur Remote-Verbindung dieser Datenbank erfordert jedoch die Verwendung einer IP-Adresse von 127.0.0.1.
Ich hoffe es hilft jemandem.
Überprüfen Sie Ihren XAMPP (wenn Sie verwenden). Ich habe immer und immer wieder den gleichen Fehler erhalten, bis ich feststellte, dass meine xampp nicht aktiviert oder offline ist, also habe ich meine xampp aktiviert, dann funktioniert es endlich.
Ich habe diesen Fehler mit der SQLite-Datenbank erhalten. Im Gegensatz zu anderen Umgebungen, in denen die Datenbankdatei erstellt wurde, wenn sie nicht vorhanden ist, musste ich in Laravel die Datenbankdatei manuell erstellen. Ich habe es erstellt nach meinen Server laufen lassen; und das führt mich zu diesem Fehler. Nach dem Neustart des Servers war es in Ordnung.
manchmal vielleicht caching problem:
php artisan config:clear