データベースとして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_pgsqlとphp_pdo_sqlを有効にしました。 laravel 5.でこれを修正する方法がわかりません。
既に述べたように、Postgres SQLとして既にデフォルトデータベースを選択しています
'default' => 'pgsql',
Php構成設定でpdoおよびpostgres共有オブジェクトのコメントを外す必要があります(php.ini)
つまり、php.iniの次の行のコメントを解除する必要があります
extension=pdo_pgsql.so
extension=pgsql.so
注:
この変更を行った後、Apache
を停止および開始することを忘れないでください(またはphp-fpm
代わりに使用する場合)。
Laravel-WAMP-PostgreSqlドライバーで例外が見つからないという問題がありました。あなたと同じようにPostgreへの直接接続を確立することもできましたが、「php artisan migrate」コマンドでは運がありません。
長い調査の結果、「extension = php_pdo_pgsql.dll」と「extension = php_pgsql.dll」がコメントされている複数のphp.iniファイルがあることがわかりました。
解決策は、(もちろん)以下のファイルの拡張子を削除することです:
**「php.ini-development」と「php.ini-production」は省略できます(これらのファイルのコメントを解除する必要はありません)。
@jeffが言ったように、これはおそらくDB_CONNECTION=pgsql
の中に .env
-ファイル。 .env
- fileにはMySQLが事前設定されているため、このファイルを編集する必要がありますmust。
DB関連の変更を行う必要があります
およびその他の設定
それでもエラーが発生する場合は、キャッシュと構成をクリアします
php artisan cache:clear
php artisan config:clear
今すぐ動作するはずです!
このコマンドを実行して、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ドライバーがインストールされます。
.envファイルを変更し、config> database.phpに移動してデフォルトをpgsqlに変更し、すべてのモデルファイルで$ protected $ connection = 'pgsql'を変更する必要があります。