Je travaille sur Laravel 5 avec Postgres comme base de données. J'ai configuré Postgres 9.4 et pgAdmin III et ceux-ci fonctionnent normalement. Lorsque j'essaie d'exécuter la migration, cela me donne une erreur:
[PDOException]
impossible de trouver le pilote
Ceci est mon database.php
'default' => 'pgsql',
'pgsql' => [ 'driver' => 'pgsql',
'Host' => '127.0.0.1',
'database' => 'fms',
'username' => 'postgres',
'password' => 'root',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public', ],
Initialement, je pensais que c’était dû à la configuration de postgres sous Windows 7, mais j’ai essayé avec php, ça marche parfaitement
<?php
$Host = "Host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=fms";
$db = pg_connect( "$Host $port $dbname user=postgres password=root" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
?>
J'ai activé php_pgsql et php_pdo_sql dans wamp également. Je ne sais pas comment résoudre ce problème sur Laravel 5.
Comme vous l'avez dit, vous avez déjà choisi la base de données par défaut comme Postgres SQL
'default' => 'pgsql',
Il est impératif que vous deviez supprimer le commentaire de l’objet partagé pdo et postgres dans vos paramètres de configuration php (php.ini)
c'est-à-dire, vous devez supprimer les commentaires suivants dans votre php.ini
extension=pdo_pgsql.so
extension=pgsql.so
Remarque :
N'oubliez pas d'arrêter et de démarrer votre Apache
après avoir modifié ces modifications (ou php-fpm
si vous l'utilisez à la place).
J'ai eu le même problème avec Laravel-WAMP-PostgreSql driver not found exception. J'ai même réussi à établir une connexion directe avec Postgre, comme vous l'avez fait, mais sans succès avec la commande "php artisan migrate".
Après de longues recherches, j'ai découvert qu'il existe plusieurs fichiers php.ini dans lesquels "extension = php_pdo_pgsql.dll" et "extension = php_pgsql.dll" apparaissent.
La solution est (bien sûr) de désactiver les extensions dans les fichiers suivants:
** Vous pouvez laisser de côté "php.ini-development" et "php.ini-production" (vous n'avez pas besoin de mettre ces commentaires en attente).
Comme @jeff a dit, cela est probablement dû à la non définition de DB_CONNECTION=pgsql
dans le fichier .env
-. MySQL est préconfiguré dans le fichier .env
-, vous donc devez éditer ce fichier.
Vous devez apporter des modifications liées à la base de données dans
et d'autres paramètres dans
Si l'erreur persiste, effacez le cache et la configuration.
php artisan cache:clear
php artisan config:clear
Cela devrait fonctionner maintenant!
vous devez modifier le fichier .env, puis aller à config> database.php et changer le fichier par défaut en pgsql, et dans tous les fichiers de votre modèle, vous devez modifier $ protected $ connection = 'pgsql'.