Laravel 5与Postgres SQL

时间:2015-05-27 10:53:08

标签: php postgresql laravel pdo laravel-5

我正在使用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上解决这个问题。

7 个答案:

答案 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”被注释掉了。

解决方案是(当然)解开以下文件中的扩展名:

  • 〜/瓦帕/ bin中/ PHP / php5.5。* / php.ini中
  • 〜/瓦帕/ bin中/ PHP / php5.5。* / phpForApache
  • 〜/瓦帕/ bin中/ PHP / php5.5。* / php.ini.install
  • 〜/ wamp / bin / php / php5.5。* / php.ini-development
  • 〜/瓦帕/ bin中/ PHP / php5.5。* / php.ini中产 和
  • 〜/瓦帕/ bin中/阿帕奇/ apache2.4.9 / php.ini中

**你可以不用“php.ini-development”和“php.ini-production”(不需要解开这些文件)。

答案 2 :(得分:3)

您必须在

中进行与数据库相关的更改
  1. 配置/ database.php中
  2. .env文件
  3. 中的其他设置
    • php.ini设置

    如果仍然出现错误,请清除缓存和配置

    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。