2015-05-27 19 views
10

su cui sto lavorando laravel 5 con Postgres come database. Ho configurato postgres 9.4 e pgAdmin III e questi funzionano normalmente. Quando si tenta di eseguire la migrazione mi sta dando errore:laravel 5 con Postgres SQL

[PDOException]
could not find driver

Questo è il mio database.php

'default' => 'pgsql', 

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

Inizialmente però, era a causa della configurazione di postgres su Windows 7, ma ho provato con php pianura funziona perfettamente

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

io ho abilitato php_pgsql e php_pdo_sql in anche un pozzo. Non sono sicuro di come risolvere questo problema su laravel 5.

+0

Nel tuo file 'php.ini' puoi decommentare' extension = pdo_pgsql.so'? –

risposta

14

Come hai detto che già choosed database predefinito come Postgres SQL

'default' => 'pgsql', 

E 'un must che è necessario rimuovere il commento l'oggetto DOP e Postgres condiviso in PHP impostazioni di configurazione (php.ini)

cioè, è necessario rimuovere il commento le seguenti righe nel file php.ini

extension=pdo_pgsql.so 
extension=pgsql.so 

Nota:

Non dimenticare di fermarsi e iniziare il vostro apache dopo aver fatto questo cambia.

3

Ho avuto lo stesso problema con il driver laravel-WAMP-PostgreSQL non trovata eccezione. Ho anche stabilito con successo la connessione diretta a Postgre come avete, ma senza fortuna con il comando "php artisan migrate".

Dopo una lunga ricerca ho scoperto che ci sono più file php.ini in cui "extension = php_pdo_pgsql.dll" e "extension = php_pgsql.dll" sono rese disponibili.

La soluzione è (ovviamente) per uncoment le estensioni nei seguenti file:.

  • ~/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 e
  • ~/WAMP/bin/apache/apache2.4.9/php.ini

** Puoi lasciare fuori "php.ini-sviluppo" e "php.ini-produzione" (non è necessario per rendere non disponibili questi file).

0

devi modificare il file .env, quindi andare a config> database.php e modificare il valore predefinito in pgsql, e anche in tutti i tuoi file di modelli è necessario modificare $ protected $ connection = 'pgsql'.

0

Come @jeff detto, questo è probabilmente causato dal non impostare DB_CONNECTION=pgsql nel file .env.Il file .env ha MySQL preconfigurato, pertanto è necessario modificare .