web-dev-qa-db-fra.com

Problème de base de données Laravel 5

J'ai installé laravel 5 avec succès en utilisant cette commande:

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

J'ai même vérifié la version de laravel installée en utilisant la commande php artisan -V. La sortie était

Laravel Framework version 5.0-dev

Ensuite, je suis allé à app/config/database.php, j'ai donné dafault db comme mysql et donné des configurations comme

'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, ]

Ensuite, je suis allé à localhost:8000/auth/register et j'ai rempli le formulaire et soumis les données. Voici l'erreur que j'ai eu:

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

Mais je n'ai jamais utilisé laravel Homestead pour installer laravel 5 dans mon système ni vagrant pour configurer laravel Homestead. Et ça me dit comme ça:

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

Comment puis-je résoudre ces problèmes?

24
Ajay Kulkarni

J'ai un problème similaire. J'ai démarré mon serveur avec la commande php artisan serve, modifié le fichier .env et actualisé la page Web qui ne reflétait aucun changement! 

Je l'ai corrigé en arrêtant le serveur Web, en modifiant le fichier .env.php et en redémarrant le serveur Web! 

Donc, je suppose que c'est un problème de mise en cache du fichier .env.php

48
Yordi Uytersprot

Laravel 5.1.10  
Comme les réponses déjà données ci-dessus par Ganesh et Yordi, Mais je les combine en un seul.

Problème
Lorsque j'essaie de créer une base de données dans phpmyAdmin et que je veux créer un schéma/une table par le biais du service Laravel Schema Builder, j'ai les erreurs suivantes:

PDOException dans Connector.php, ligne 50: SQLSTATE [HY000] [1045] Accès refusé pour l'utilisateur 'Homestead' @ 'localhost' (en utilisant le mot de passe: YES) 
dans Connector.php ligne 50 
at PDO -> __ construct ('mysql: Host = localhost; nombase = Homestead', 'Homestead', 'secret', tableau ('0', '2', '0', faux, '0')) 
dans Connector.php ligne 50 
at Connector-> createConnection ('mysql: Host = localhost; nombase = Homestead', array ('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'nomutilisateur' => 'Homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name '=>' mysql '), tableau (' 0 ',' 2 ',' 0 ', faux,' 0 ')) dans la ligne 22 .__ de MySqlConnector.php. sur MySqlConnector-> connect (array ('driver' => 'mysql', 'Host' => 'localhost', 'database' => 'Homestead', 'username' => 'Homestead', 'password' => ' secret ',' charset '=>' utf8 ',' collation '=>' utf8_unicode_ci ',' prefix '=>' ',' strict '=> false,' name '=>' mysql ')) .... .........

Solution 1:  
Ensuite, j'ai réalisé que les problèmes se trouvaient dans le fichier env, mais j'ai oublié de modifier les valeurs du fichier env. Le fichier .env se trouve dans le répertoire racine de laravel 5ouvrez le fichier et modifiez les valeurs suivantes avec vos

DB_DATABASE = localhost, 
DB_USERNAME = nom de la base de données, 
DB_PASSWORD = databse-user-password 

Solution 2:  
Ou changer dans le fichier database.php sans env () comme 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,
    ]

Les deux solutions ont fonctionné pour moi.

8
MasoodUrRehman

Laravel utilise les variables contenues dans votre fichier .env.

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

Il est souvent utile d’avoir différentes valeurs de configuration en fonction de l’environnement d’exécution de l’application. Par exemple, vous souhaiterez peut-être utiliser localement un pilote de cache différent de celui utilisé sur votre serveur de production. C'est facile en utilisant une configuration basée sur l'environnement.

Laravel utilise la bibliothèque DotEnv PHP de Vance Lucas. Dans une nouvelle installation de Laravel, le répertoire racine de votre application contiendra un fichier .env.example. Si vous installez Laravel via Composer, ce fichier sera automatiquement renommé .env. Sinon, vous devez renommer le fichier manuellement.

Toutes les variables répertoriées dans ce fichier seront chargées dans le super-global $ _ENV PHP lorsque votre application recevra une requête. Vous pouvez utiliser l’environnemental env pour récupérer les valeurs de ces variables. En fait, si vous examinez les fichiers de configuration de Laravel, vous remarquerez que plusieurs des options utilisent déjà cette aide!

N'hésitez pas à modifier vos variables d'environnement selon vos besoins pour votre propre serveur local, ainsi que votre environnement de production. Toutefois, votre fichier .env ne doit pas être affecté au contrôle de source de votre application, car chaque développeur/serveur utilisant votre application peut nécessiter une configuration d'environnement différente.

Si vous développez avec une équipe, vous voudrez peut-être continuer à inclure un fichier .env.example avec votre application. En plaçant des valeurs d'espace réservé dans l'exemple de fichier de configuration, les autres développeurs de votre équipe peuvent voir clairement quelles variables d'environnement sont nécessaires pour exécuter votre application.

Le fichier .env par défaut ressemble à ceci:

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

J'ai le même problème. Après avoir utilisé la commande "php artisan config: clear" pour effacer l'ancien fichier de cache de configuration, cela peut fonctionner. Peut-être que vous pouvez l'essayer.

Au fait, mon anglais n'est pas bon, j'espère que vous pourrez comprendre.

3
Eason Hung

Dans 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,
    ],

En fichier .env:

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

Fermez le serveur d’application laravel et redémarrez-le pour vider le cache.

  php artisan serve

Ou tu peux faire: 

  php artisan config:clear

Cela effacera le cache dans les fichiers de configuration.

Maintenant, ça va définitivement marcher! À votre santé! 

3
Sunil

Laravel utilise le fichier .env, alors changez le fichier .env ou changez-le dans le fichier database.php sans 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 utilise le fichier .env pour le nom de la base de données, nom d'utilisateur et mot de passe. Veuillez modifier votre fichier .env

DB_Host = localhost

DB_DATABASE = mon_projet

DB_USERNAME = root

DB_PASSWORD = mon projet

Après avoir modifié ceci, exécutez la commande ci-dessous:

composer dump-autoload

puis lancez votre projet

php artisan servir

2
Nithin

J'ai eu un problème très similaire et je ne savais pas où chercher. J'ai effacé le cache, redémarré le serveur, etc., pas de joie. Jusqu'à ce que je le trouve ... 

Avant de revenir à une version précédente du référentiel Git, j'avais mon pilote de session configuré pour utiliser la base de données ! C'est idiot, mais ce n'est pas nécessairement la connexion à la base de données que vous devez regarder, mais l'endroit où vous appelez la base de données à utiliser en premier lieu.

J'espère que quelqu'un qui se retrouvera sur cette page comme je l'ai fait trouvera cela utile.

1
Barnabas Kecskes

Oui, j'ai eu les mêmes problèmes où tout s'est bien passé depuis l'installation de migration jusqu'à la migration artisanale php. Mais quand j'ai essayé de créer un utilisateur, l'accès est refusé.

La solution que j’ai trouvée était de fermer ctrl + d pour mettre fin au serveur et redémarrer. J'ai travaillé... :)

0
Bastin Robin

j'ai le même issui, éditer le fichier .env sur le dossier racine et changer la configuration de la base de données DB_DATABASEDB_USERNAMEDB_PASSWORD

0
vuhung3990

vous pouvez redémarrer votre serveur Je pense qu’il s’agit d’une erreur de capture dans Laravel, alors relancez votre serveur avec "php artisan serve" et actualisez la page de votre site Web. C’est bien.

0
HRMadani

Dans votre laravel par exemple. c:/www/laravel, créez un nouveau répertoire appelé "local" dans app/config.Copy database.php (app/config/database.php).

0
user2338925