2015-05-27 46 views
10

我正在使用postgres作爲數據庫的Laravel 5。我配置了postgres 9.4和pgAdmin III,這些工作正常。當我嘗試運行遷移它給我的錯誤:Laravel 5與Postgres SQL

[PDOException]
could not find driver

這是我爲database.php

'default' => 'pgsql', 

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

起初我以爲,這是由於在Windows 7上的Postgres的配置,但我試着用純PHP它的作品完美

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

我已經啓用php_pgsqlphp_pdo_sql在也是wamp。我不知道如何當你說你已經選用默認數據庫爲SQL Postgres的

'default' => 'pgsql', 

這是你需要取消對PDO和Postgres共享對象必須解決這個問題上laravel 5

+0

在你的'php.ini'中,你可以取消註釋'extension = pdo_pgsql.so'? –

回答

14

在你的PHP配置設置(php.ini)

即,您需要取消以下線在php.ini

extension=pdo_pgsql.so 
extension=pgsql.so 

注意:

不要忘記在做這些更改後停止並啓動你的apache。

3

我與Laravel-WAMP-PostgreSql驅動程序沒有找到異常相同的問題。我甚至成功建立了與Postgre的直接連接,但沒有運行「php artisan migrate」命令。

經過長時間的研究,我發現有多個php.ini文件,其中「extension = php_pdo_pgsql.dll」和「extension = php_pgsql.dll」被隱藏起來。

的解決方案是(當然)至uncoment在下面的文件的擴展名:

  • 〜/瓦帕/ bin中/ PHP/php5.5 */php.ini中
  • 〜/瓦帕/斌/ PHP/php5.5。*/phpForApache
  • 〜/ WAMP /斌/ PHP/php5.5。*/php.ini.install
  • 〜/ WAMP /斌/ PHP/php5.5。*/php.ini-development
  • 〜/ wamp/bin/php/php5.5。*/php.ini-production and
  • 〜/ WAMP /斌/阿帕奇/ apache2.4.9/php.ini中

**您可以不指定 「的php.ini-發展」 和 「php.ini中產」(不需要解開這些文件)。

0

您必須修改.env文件,然後轉到config> database.php並將默認值更改爲pgsql,並且還需要在所有模型文件中更改$ protected $ connection ='pgsql'。

0

像@jeff說的,這可能是由於在.env文件中未設置DB_CONNECTION=pgsql而造成的。.env -file有MySQL預配置,所以你必須編輯這個文件。