我正在使用postgres作为数据库工作Laravel 5。我配置了postgres 9.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";
}
?>
我也在wamp中启用了 php_pgsql 和 php_pdo_sql 。我不知道如何在laravel 5上解决这个问题。
答案 0 :(得分:29)
正如您所说,您已选择默认数据库为Postgres SQL
'default' => 'pgsql',
您必须在php配置设置中取消注释pdo和postgres共享对象(php.ini)
即,您需要取消注释php.ini中的以下行
extension=pdo_pgsql.so
extension=pgsql.so
注意:
执行此更改后,请不要忘记停止并启动apache
(如果使用此更改,则为php-fpm
。)
答案 1 :(得分:6)
我遇到了与Laravel-WAMP-PostgreSql驱动程序未找到异常相同的问题。我甚至成功地建立了与Postgre的直接连接,但是没有运气“php artisan migrate”命令。
经过长时间的研究,我发现有多个php.ini文件,其中“extension = php_pdo_pgsql.dll”和“extension = php_pgsql.dll”被注释掉了。
解决方案是(当然)解开以下文件中的扩展名:
**你可以不用“php.ini-development”和“php.ini-production”(不需要解开这些文件)。
答案 2 :(得分:3)
您必须在
中进行与数据库相关的更改和
中的其他设置如果仍然出现错误,请清除缓存和配置
php artisan cache:clear
php artisan config:clear
现在应该可以使用了!
答案 3 :(得分:2)
就像@jeff说的那样,这可能是因为没有在DB_CONNECTION=pgsql
文件中设置.env
。 .env
- 文件已预先配置了MySQL,因此您必须编辑此文件。
答案 4 :(得分:1)
运行此命令可轻松取消注释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驱动程序。
答案 5 :(得分:0)
你必须修改.env文件,然后转到config&gt; database.php并将默认值更改为pgsql,并且在所有模型文件中你需要更改$ protected $ connection =&#39; pgsql&#39;。
答案 6 :(得分:0)
我正在使用PHP7.3,这对我有用,我忘了这个:
apt-get install php7.3-pgsql
此后,一切运行顺利。只需使用您正在使用的任何版本的PHP。