J'ai transféré un projet Laravel basé sur le déplacement d'un projet Laravel entre ordinateurs
Tout allait bien au premier regard. J'ai pu installer le composeur sans aucun problème, puis j'ai défini mes variables d'environnement dans mon .env telles que le nom de la base de données, l'utilisateur de la base de données, etc.
Quand j'ai commencé à utiliser la commande suivante,
php artisan cache: clear
J'ai eu ces deux erreurs,
Dans Connection.php ligne 664:
SQLSTATE [HY000] [1045] Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: Oui) (SQL: sélectionnez * dans information_schema.tables où tabale_schema = *** et table_name = ****) p >Dans Connector.php ligne 67:
SQLSTATE [HY000] [1045] Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: Oui)
Informations complémentaires:
En fin de compte, j'ai joint une photo afin de développer le problème.
3 Réponses :
Après avoir déplacé un projet Laravel vers un autre emplacement, la première chose à faire est de régénérer APP_KEY
dans le fichier .env
en exécutant la commande depuis la racine de votre application répertoire:
php artisan db:seed
Après cela, vous reconfigurez votre cache:
php artisan migrate
De plus, assurez-vous que tous les paramètres de votre base de données sont dans votre . env
et config / database.php
sont corrects et identiques à votre configuration précédente de Laravel - Vous pouvez les modifier manuellement puis reconfigurer votre cache comme indiqué ci-dessus. Si ce n'est pas le cas (par exemple, le nom de la base de données est modifié), vous devrez peut-être réexécuter vos migrations de base de données et vos seeders:
php artisan config:cache
et
php artisan key:generate
J'ai mentionné dans la 2ème partie de mes informations complémentaires que j'ai testé la connexion DB et qu'elles fonctionnent correctement!
À partir de votre message, cela signifie que vous n'avez pas configuré l'utilisateur "Javad" pour avoir un accès lecture
à la base de données "nlp". si vous avez phpmyadmin ou mysql workbench, vous pouvez vérifier cela.
le problème n'est pas votre fichier .env
. Vous devez accéder directement à votre base de données via la console ou toute autre interface utilisateur et vous assurer qu’un utilisateur nommé "Javad" dispose d’un accès en lecture
et écriture
à un utilisateur existant schéma de base de données nommé "nlp"
quel type de base de données utilisez-vous?
Mec, j'ai vérifié les autorisations, j'ai accordé à l'utilisateur ma base de données et il a des autorisations complètes sur CRUD sur les tables.
Essayez ensuite d'exécuter votre requête en dehors de votre application laravel. Utilisez la console de base de données ou un script de requête dans Phpmyadmin, pour voir si vous obtenez la même erreur
Je l'ai essayé dans la console, il est intéressant de noter que la colonne inconnue 'nlp' dans la clause where. J'ai testé cette requête: sélectionnez * de information_schema.tables où table_schema = nlp et table_name = page;
J'ai mis nlp et les pages entre guillemets, qc comme "" puis ça a marché
continuons cette discussion dans le chat .
Je pense que les fichiers de configuration ne sont pas accessibles en écriture par l'utilisateur apache, étant donné que vous utilisez apache. Assurez-vous que vous avez donné l'autorisation d'écriture pour bootstrap / cache pour l'utilisateur. Ce répertoire contient les fichiers de configuration mis en cache.Si tel est le cas, les félicitations seront chargées à partir d'ici et votre configuration précédemment utilisée sera chargée, ce qui peut être à l'origine du problème.
Vous devez également donner une autorisation d'écriture sur le répertoire de stockage. Comme il y a le fichier journal et l'utilisateur apache doit également écrire dessus.
J'ai changé l'autorisation de bootstrap / cache en 777 mais encore une fois j'ai eu les mêmes erreurs!
Ouvrez le fichier .env
et modifiez-le. Configurez simplement les informations d'identification de base de données correctes:
php artisan config:cache
Une fois la modification de .env
terminée, entrez cette commande dans votre terminal pour effacer le cache:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE= // Your Database Name DB_USERNAME= // Your Database Username, If no username has been set then by default there is a root as a username DB_PASSWORD= // Your Database Password, If no password is set on the database, clear it
S'il y a toujours la même erreur, essayez une autre solution possible.
J'ai également rencontré le même problème, j'ai essayé toutes les réponses possibles dans StackOverflow mais rien ne pouvait m'aider, cette solution a fonctionné du premier coup:
Si vous utilisez le serveur Web par défaut de PHP (par exemple php artisan serve
), vous devez redémarrer votre serveur après avoir modifié les valeurs de votre fichier .env
.
J'ai trouvé cette solution d'ici laravel.io (Lire la solution de Byjml)
Comme je l'ai écrit, j'ai testé toutes ces étapes et j'ai eu les mêmes erreurs!
Avez-vous la base de données et l'utilisateur de la base de données sur le nouvel environnement?
Je suis entré dans la base de données avec l'utilisateur et le mot de passe avec succès puis j'ai obtenu la liste des bases de données, enfin j'ai pu voir le nom de la base de données sur laquelle je travaille!
Essayez de supprimer le cache de configuration manuellement. Pour ce faire, supprimez:
bootstrap / cache / config.php
(ou renommez-le pour le conserver en sauvegarde).Pourriez-vous également fournir les étapes exactes que vous avez effectuées du début jusqu'à l'erreur? Avez-vous installé exactement la même version des packages ou avez-vous fait une nouvelle installation de Laravel et plus de l'ancien code? Sur quelle version de Laravel êtes-vous?