Laravel 5 with Postgres SQL

2022-08-30 21:37:20

我正在使用postgres作为数据库开发Laravel 5。我已经配置了postgres 9.4和pgAdmin III,它们工作正常。当我尝试运行迁移时,它给我错误:

[PDOException]
找不到驱动程序

这是我的数据库.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上解决这个问题。


答案 1

正如你所说,你已经选择了默认数据库作为Postgres SQL

'default' => 'pgsql',

您必须在php配置设置中取消注释pdo和postgres共享对象(php.ini)

也就是说,您需要在php中取消注释以下行.ini

extension=pdo_pgsql.so
extension=pgsql.so

注意:

不要忘记在进行此更改后停止并启动(或者如果改用它)。apachephp-fpm


答案 2

我有同样的问题与Laravel-WAMP-PostgreSql驱动程序没有找到异常。我甚至成功地建立了与Postgre的直接连接,就像你一样,但“php artisan migrate”命令没有运气。

经过长时间的研究,我发现有多个php.ini文件,其中“extension=php_pdo_pgsql.dll”和“extension=php_pgsql.dll”被复制出来。

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

  • ~/wamp/bin/php/php5.*/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.*/php.ini-production 和
  • ~/wamp/bin/apache/apache2.4.9/php.ini

**您可以省略“php.ini-development”和“php.ini-production”(不需要取消这些文件)。


推荐