Laravel 5 with Postgres SQL

2019-02-08 16:00发布

I’m working on Laravel 5 with postgres as database. I’ve configured postgres 9.4 and pgAdmin III and these are working normally. When I try to run migrate it is giving me error:

[PDOException]
could not find driver

This is my database.php

'default' => 'pgsql',

'pgsql' => [            'driver'   => 'pgsql',          
                        'host'     => '127.0.0.1',          
                        'database' => 'fms',            
                        'username' => 'postgres',           
                        'password' => 'root',           
                        'charset'  => 'utf8',           
                        'prefix'   => '',           
                        'schema'   => 'public',         ],

Initially I though, it was due to configuration of postgres on windows 7 but I tried with plain php it works perfect

<?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";
   }
?>

I’ve enabled php_pgsql and php_pdo_sql in wamp as well. I’m not sure how to fix this on laravel 5.

5条回答
乱世女痞
2楼-- · 2019-02-08 16:09

you gotta modify .env file , then go to config>database.php and change the default to pgsql, and also in all your models file you need to change $protected $connection= 'pgsql'.

查看更多
冷血范
3楼-- · 2019-02-08 16:19

As you said you already choosed Default Database as Postgres SQL

'default' => 'pgsql',

It is a must that you need to uncomment the pdo and postgres shared object in your php configuration settings (php.ini)

i.e., You need to uncomment the following lines in your php.ini

extension=pdo_pgsql.so
extension=pgsql.so

Note :

Don't forget to stop and start your apache after doing this changes (or php-fpm if using that instead).

查看更多
smile是对你的礼貌
4楼-- · 2019-02-08 16:20

I had the same problem with Laravel-WAMP-PostgreSql driver not found exception. I even successfully established direct connection to Postgre as you have, but with no luck with the "php artisan migrate" command.

After long research I found out that there are multiple php.ini files in which "extension=php_pdo_pgsql.dll" and "extension=php_pgsql.dll" are comented out.

The solution is (of course) to uncoment the extensions in the following files:

  • ~/wamp/bin/php/php5.5.*/php.ini
  • ~/wamp/bin/php/php5.5.*/phpForApache
  • ~/wamp/bin/php/php5.5.*/php.ini.install
  • ~/wamp/bin/php/php5.5.*/php.ini-development
  • ~/wamp/bin/php/php5.5.*/php.ini-production and
  • ~/wamp/bin/apache/apache2.4.9/php.ini

** You can leave off the "php.ini-development" and "php.ini-production" (don't need to uncoment these files).

查看更多
仙女界的扛把子
5楼-- · 2019-02-08 16:21

Like @jeff said, this is probably caused by not setting DB_CONNECTION=pgsql in the .env-file. The .env-file has MySQL preconfigured, so you must edit this file.

查看更多
Emotional °昔
6楼-- · 2019-02-08 16:25

You have to make DB related changes in

  1. config/database.php
  2. .env file

and other settings in

  • php.ini settings

If you are still getting error, then clear cache and config

php artisan cache:clear
php artisan config:clear

It should work now!

查看更多
登录 后发表回答