web-dev-qa-db-ja.com

Laravel 5 Postgresqlで

データベースとしてpostgresを使用してLaravel 5に取り組んでいます。postgres9.4とpgAdmin IIIを設定しましたが、これらは正常に動作しています。

[PDOException]
ドライバーが見つかりませんでした

これは私の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を有効にしました。 laravel 5.でこれを修正する方法がわかりません。

16
Moyed Ansari

既に述べたように、Postgres SQLとして既にデフォルトデータベースを選択しています

'default' => 'pgsql',

Php構成設定でpdoおよびpostgres共有オブジェクトのコメントを外す必要があります(php.ini)

つまり、php.iniの次の行のコメントを解除する必要があります

extension=pdo_pgsql.so
extension=pgsql.so

注:

この変更を行った後、Apacheを停止および開始することを忘れないでください(またはphp-fpm代わりに使用する場合)。

32

Laravel-WAMP-PostgreSqlドライバーで例外が見つからないという問題がありました。あなたと同じようにPostgreへの直接接続を確立することもできましたが、「php artisan migrate」コマンドでは運がありません。

長い調査の結果、「extension = php_pdo_pgsql.dll」と「extension = php_pgsql.dll」がコメントされている複数のphp.iniファイルがあることがわかりました。

解決策は、(もちろん)以下のファイルの拡張子を削除することです:

  • 〜/ 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および
  • 〜/ wamp/bin/Apache/apache2.4.9/php.ini

**「php.ini-development」と「php.ini-production」は省略できます(これらのファイルのコメントを解除する必要はありません)。

6
anchor

@jeffが言ったように、これはおそらくDB_CONNECTION=pgsql の中に .env-ファイル。 .env- fileにはMySQLが事前設定されているため、このファイルを編集する必要がありますmust

3
rinderwahn

DB関連の変更を行う必要があります

  1. config/database.php
  2. .envファイル

およびその他の設定

  • php.ini設定

それでもエラーが発生する場合は、キャッシュと構成をクリアします

php artisan cache:clear
php artisan config:clear

今すぐ動作するはずです!

3
Ravistm

このコマンドを実行して、php.iniのextension = pdo_pgsql.soおよびextension = pgsql.soの行のコメントを簡単に解除します。

sed -ri -e 's!;extension=pdo_pgsql!extension=pdo_pgsql!' $PHP_INI_DIR/php.ini

sed -ri -e 's!;extension=pgsql!extension=pgsql!' $PHP_INI_DIR/php.ini

ドライバがまだインストールされていない場合、または動的ライブラリPGSQLをロードできないなどのエラーが発生する場合は、次を実行します。

apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pgsql pdo_pgsql

これにより、pgsqlおよびpdo_pgsqlドライバーがインストールされます。

0
Ash

.envファイルを変更し、config> database.phpに移動してデフォルトをpgsqlに変更し、すべてのモデルファイルで$ protected $ connection = 'pgsql'を変更する必要があります。

0
Jeff