2015-05-27 30 views
10

Tôi đang làm việc trên Laravel 5 với postgres làm cơ sở dữ liệu. Tôi đã định cấu hình postgres 9.4 và pgAdmin III và chúng hoạt động bình thường. Khi tôi cố gắng chạy di chuyển nó đem lại cho tôi lỗi:Laravel 5 với Postgres SQL

[PDOException]
could not find driver

Đây là database.php tôi

'default' => 'pgsql', 

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

Ban đầu tôi mặc dù, đó là do cấu hình của postgres trên windows 7 nhưng tôi đã cố gắng với php đơn giản nó hoạt động hoàn hảo

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

tôi đã kích hoạt php_pgsqlphp_pdo_sql trong cũng vậy. Tôi không chắc chắn làm thế nào để sửa lỗi này trên laravel 5.

+0

Trong 'php.ini', bạn có thể bỏ ghi chú' extension = pdo_pgsql.so' không? –

Trả lời

14

Như bạn nói bạn đã chọn lựa mặc định Cơ sở dữ liệu như Postgres SQL

'default' => 'pgsql', 

Đó là điều bắt buộc mà bạn cần phải bỏ ghi chú PDO và postgres chia sẻ đối tượng trong chương trình PHP cấu hình cài đặt (php.ini)

tức, bạn cần phải bỏ ghi chú dòng sau trong php.ini của bạn

extension=pdo_pgsql.so 
extension=pgsql.so 

Lưu ý:

Đừng quên dừng và bắt đầu apache của bạn sau khi thực hiện thay đổi này.

3

Tôi đã gặp vấn đề tương tự với trình điều khiển Laravel-WAMP-PostgreSql không tìm thấy ngoại lệ. Tôi thậm chí đã thiết lập thành công kết nối trực tiếp với Postgre như bạn có, nhưng không có may mắn với lệnh "di chuyển nghệ thuật php".

Sau khi nghiên cứu dài, tôi phát hiện ra rằng có nhiều tệp php.ini trong đó "extension = php_pdo_pgsql.dll" và "extension = php_pgsql.dll" được đưa ra.

Giải pháp là (tất nhiên) để uncoment các phần mở rộng trong các tập tin sau đây:.

  • ~/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 và
  • ~/wamp/bin/apache/apache2.4.9/php.ini

** Bạn có thể bỏ "php.ini-development" và "php.ini-production" (không cần để uncoment những tập tin này).

0

bạn phải sửa đổi tệp .env, sau đó đi tới config> database.php và thay đổi mặc định thành pgsql, và trong tất cả các tệp mô hình của bạn, bạn cần phải thay đổi $ protected $ connection = 'pgsql'.

0

Giống như @jeff cho biết, điều này có thể do không đặt DB_CONNECTION=pgsql trong .env-tệp..env -file có cấu hình sẵn MySQL, vì vậy bạn phải chỉnh sửa tệp này.