web-dev-qa-db-de.com

Laravel 5 Datenbankproblem

Ich habe Laravel 5 mit folgendem Befehl erfolgreich installiert:

composer create-project laravel/laravel test-laravel-5-project dev-develop --prefer-dist

Ich habe sogar die Version der installierten Laravel mit dem Befehl php artisan -V überprüft. Die Ausgabe war

Laravel Framework version 5.0-dev

Dann ging ich zu app/config/database.php, gab dafault db als mysql und gab Konfigurationen als an

'mysql' => [ 'driver' => 'mysql', 'Host' => env('DB_Host', 'localhost'), 'database' => env('DB_DATABASE', 'Logintestfive'), 'username'=> env('DB_USERNAME', 'root'), 'password'=> env('DB_PASSWORD', 'manasa'), 'charset'=> 'utf-8', 'collation'=> 'utf-8_unicode_ci', prefix=> '', 'strict'=> false, ]

Dann ging ich zu localhost:8000/auth/register und füllte das Formular aus und übermittelte die Daten. Dies ist der Fehler, den ich bekam:

PDOException in Connector.php line 47: SQLSTATE[28000] [1045] Access denied for user 'Homestead'@'localhost' (using password: YES)

Aber ich habe weder laravel Homestead für die Installation von Laravel 5 in meinem System verwendet noch vagrant, um Laravel Homestead einzurichten. Und es sagt mir so:

in Connector.php line 47
at PDO->__construct('mysql:Host=localhost;dbname=Homestead', 'Homestead', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 47
at Connector->createConnection('mysql:Host=localhost;dbname=Homestead', array('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 20
at MySqlConnector->connect(array('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10545
at ConnectionFactory->createSingleConnection(array('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10541
at ConnectionFactory->make(array('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false), 'mysql') in compiled.php line 10459

Wie kann ich diese Probleme beheben?

24
Ajay Kulkarni

Ich habe ein ähnliches Problem. Ich habe meinen Server mit dem Befehl php artisan serve gestartet, die Datei .env bearbeitet und die Webseite mit den Änderungen aktualisiert. 

Ich habe das Problem behoben, indem der Webserver angehalten, die .env.php-Datei bearbeitet und der Webserver neu gestartet wurde! 

Ich denke also, es handelt sich um eine Caching-Ausgabe der .env.php-Datei. 

48

Laravel 5.1.10  
Wie die Antworten, die bereits von Ganesh und Yordi oben gegeben wurden, aber ich fasse die beiden zu einem einzigen zusammen.

Problem
Wenn ich versuche, eine Datenbank in phpmyAdmin zu erstellen, und ein Schema/eine Tabelle über den Laravel Schema Builder-Dienst erstellen möchte, habe ich die folgenden Fehler erhalten:

PDOException in Connector.php Zeile 50: SQLSTATE [HY000] [1045] Zugriff für Benutzer 'Homestead' @ 'localhost' verweigert (unter Verwendung des Kennworts: YES) 
in Connector.php Zeile 50 
at PDO -> __ construct ('mysql: Host = localhost; dbname = Homestead', 'Homestead', 'secret', array ('0', '2', '0', false, '0')) 
in Connector.php Zeile 50 
bei Connector-> createConnection ('mysql: Host = localhost; dbname = Homestead', array ('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username') => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name '=>' mysql '), array (' 0 ',' 2 ',' 0 ', false,' 0 ')) in MySqlConnector.php Zeile 22 at MySqlConnector-> connect (array ('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => ' secret ',' charset '=>' utf8 ',' collation '=>' utf8_unicode_ci ',' Präfix '=>' ',' strict '=> false,' name '=>' mysql ')) .... .........

Lösung 1:  
Dann wurde mir klar, dass die Probleme in der env-Datei waren. Ich vergaß die Werte in der env-Datei zu ändern. Die .env-Datei befindet sich im Hauptverzeichnis von laravel 5. Öffnen Sie die Datei und ändern Sie die folgenden Werte mit Ihren

DB_DATABASE = localhost, 
DB_USERNAME = Benutzername der Datenbank, 
DB_PASSWORD = Datenbankbenutzer-Passwort 

Lösung 2:  
Oder ändern Sie die Datei database.php ohne env () als Ganesh syas:

    // instead of this block
    'mysql' => [
        'driver'    => 'mysql',
        'Host'      => env('DB_Host', 'localhost'),
        'database'  => env('DB_DATABASE', 'your database name'),
        'username'  => env('DB_USERNAME', 'your database username'),
        'password'  => env('DB_PASSWORD', 'your database password'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    // use this one

    'mysql' => [
        'driver'    => 'mysql',
        'Host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

Die beiden Lösungen haben für mich funktioniert.

8
MasoodUrRehman

Laravel verwendet die in Ihrer .env-Datei enthaltenen Variablen.

Von: http://laravel.com/docs/master/configuration

Es ist oft hilfreich, unterschiedliche Konfigurationswerte zu haben, die auf der Umgebung basieren, in der die Anwendung ausgeführt wird. Beispielsweise möchten Sie möglicherweise lokal einen anderen Cachetreiber verwenden als auf Ihrem Produktionsserver. Es ist einfach, die umgebungsbasierte Konfiguration zu verwenden.

Laravel nutzt die DotEnv PHP Bibliothek von Vance Lucas. Bei einer neuen Laravel-Installation enthält das Stammverzeichnis Ihrer Anwendung eine .env.example-Datei. Wenn Sie Laravel über Composer installieren, wird diese Datei automatisch in .env umbenannt. Andernfalls sollten Sie die Datei manuell umbenennen.

Alle in dieser Datei aufgelisteten Variablen werden in das $ _ENV PHP Super-Global geladen, wenn Ihre Anwendung eine Anforderung erhält. Sie können den env-Helper verwenden, um Werte aus diesen Variablen abzurufen. Wenn Sie die Laravel-Konfigurationsdateien durchsehen, werden Sie feststellen, dass einige Optionen bereits diesen Helfer verwenden!

Sie können Ihre Umgebungsvariablen nach Bedarf für Ihren eigenen lokalen Server sowie für Ihre Produktionsumgebung ändern. Ihre .env-Datei sollte jedoch nicht an die Quellcodeverwaltung Ihrer Anwendung übergeben werden, da für jeden Entwickler/Server, der Ihre Anwendung verwendet, möglicherweise eine andere Umgebungskonfiguration erforderlich ist.

Wenn Sie mit einem Team entwickeln, möchten Sie möglicherweise eine .env.example-Datei in Ihre Anwendung einfügen. Durch Platzieren von Platzhalterwerten in die Beispielkonfigurationsdatei können andere Entwickler in Ihrem Team eindeutig erkennen, welche Umgebungsvariablen zum Ausführen Ihrer Anwendung erforderlich sind.

Die standardmäßige .env-Datei sieht ungefähr so ​​aus:

APP_ENV=local
APP_DEBUG=true
APP_KEY=YOUR_KEY_HERE

DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
5
ajtrichards

Ich habe das gleiche Problem. Nachdem ich den Befehl "php artisan config: clear" verwendet habe, um die alte Konfigurations-Cache-Datei zu löschen, kann es funktionieren. Vielleicht kannst du es versuchen.

Mein Englisch ist übrigens nicht gut, ich hoffe, Sie verstehen es.

3
Eason Hung

In Config-> database.php

'mysql' => [
        'driver' => 'mysql',
        'Host' => env('DB_Host', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'DBName'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],

In der .env-Datei:

DB_Host=localhost
DB_PORT=3306
DB_DATABASE=DBName
DB_USERNAME=root
DB_PASSWORD=

Schließen Sie den Laravel-Anwendungsserver und starten Sie ihn erneut, um den Cache zu löschen.

  php artisan serve

Oder Sie können: 

  php artisan config:clear

Dadurch wird der Cache in Konfigurationsdateien gelöscht.

Jetzt wird es auf jeden Fall funktionieren! Prost! 

3
Sunil

Laravel verwendet die .env-Datei. Ändern Sie daher die .env-Datei oder ändern Sie die Datei database.php ohne env ().

'mysql' => [
        'driver'    => 'mysql',
        'Host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]
3
Ganesh Jogam

Laravel config/database.php verwendet die .env-Datei für Datenbanknamen, Benutzernamen und Kennwort

DB_Host = localhost

DB_DATABASE = mein_projekt

DB_USERNAME = root

DB_PASSWORD = mein Projekt

Nach dem Ändern des Befehls führen Sie den folgenden Befehl aus:

composer dump-autoload

führen Sie dann Ihr Projekt aus

php Handwerker dienen

2
Nithin

Ich hatte ein sehr ähnliches Problem und wusste nicht, wo ich suchen sollte. Ich habe den Cache geleert, den Server neu gestartet usw., keine Freude. Bis ich es gefunden habe ... 

Bevor ich zu einer früheren Version des Git-Repos zurückkehrte, hatte ich meinen Sitzungstreiber so eingestellt, dass er die Datenbank verwendet! Dumme Sache, aber es ist nicht notwendigerweise die Datenbankverbindung, auf die Sie achten müssen, sondern stattdessen die Datenbank, die an erster Stelle verwendet werden soll.

Ich hoffe, dass jemand, der so wie ich auf dieser Seite landet, dies hilfreich finden wird.

1

Ja, ich hatte die gleichen Probleme, bei denen alles gut lief, von der Migrationsinstallation zur PHP-Handwerker-Migration. Aber als ich versuchte, einen Benutzer zu erstellen, wurde der Zugriff verweigert.

Ich fand die Lösung, die Strg + D zu schließen, um den Server zu beenden und neu zu starten. Ich arbeitete... :)

0
Bastin Robin

ich habe das gleiche Issui, editiere die Datei .env im Root-Ordner und ändere die Datenbank-Konfiguration DB_DATABASEDB_USERNAMEDB_PASSWORD

0
vuhung3990

sie können Ihren Server neu starten Ich denke, es ist ein Catch-Fehler in Laravel, also führen Sie Ihren Server erneut mit "Php Artisan Serv" aus und aktualisieren Sie Ihre Website.

0
HRMadani

In deiner Laravel zB. c:/www/laravel, erstellen Sie ein neues Verzeichnis namens 'local' in app/config.Copy database.php (app/config/database.php). Dies funktioniert für mich

0
user2338925