当前位置: 首页 > 知识库问答 >
问题:

通过laravel连接Postgresql数据库时出现的问题

长孙绍辉
2023-03-14

我很难用pgsql设置laravel 5.3(在wamp/windows上运行)。当我尝试使用“php artisan migrate”迁移表时,出现了一个错误“PDO异常-找不到驱动程序”

  1. 我安装了postgres 9.6。
  2. 我启用了postgresql的php扩展:



    $dbh = new PDO("pgsql:dbname=rotocms;host=127.0.0.1", "postgres", "mypassword");

    if($dbh){
     echo "connected";
    }else{
     echo 'there has been an error connecting';
    }


所以我被卡住了,无法在laravel进行迁移工作。我的. env:


    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=mydatabasename
    DB_USERNAME=postgres
    DB_PASSWORD=password

以下是laravel错误堆栈:

    local.ERROR: PDOException: could not find driver in C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:119
Stack trace:
#0 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php(119): PDO->__construct('pgsql:host=127....', 'postgres', 'password', Array)
#1 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php(56): Illuminate\Database\Connectors\Connector->createPdoConnection('pgsql:host=127....', 'postgres', 'password', Array)
#2 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\PostgresConnector.php(36): Illuminate\Database\Connectors\Connector->createConnection('pgsql:host=127....', Array, Array)
#3 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php(100): Illuminate\Database\Connectors\PostgresConnector->connect(Array)
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#5 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connection.php(964): call_user_func(Object(Closure))
#6 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connection.php(832): Illuminate\Database\Connection->getPdo()
#7 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connection.php(717): Illuminate\Database\Connection->reconnectIfMissingConnection()
#8 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Connection.php(350): Illuminate\Database\Connection->run('select * from i...', Array, Object(Closure))
#9 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Schema\PostgresBuilder.php(25): Illuminate\Database\Connection->select('select * from i...', Array)
#10 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Migrations\DatabaseMigrationRepository.php(156): Illuminate\Database\Schema\PostgresBuilder->hasTable('migrations')
#11 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php(515): Illuminate\Database\Migrations\DatabaseMigrationRepository->repositoryExists()
#12 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(92): Illuminate\Database\Migrations\Migrator->repositoryExists()
#13 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(58): Illuminate\Database\Console\Migrations\MigrateCommand->prepareDatabase()
#14 [internal function]: Illuminate\Database\Console\Migrations\MigrateCommand->fire()
#15 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Container\Container.php(508): call_user_func_array(Array, Array)
#16 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Console\Command.php(169): Illuminate\Container\Container->call(Array)
#17 C:\wamp64\www\myproject\vendor\symfony\console\Command\Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Console\Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 C:\wamp64\www\myproject\vendor\symfony\console\Application.php(820): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 C:\wamp64\www\myproject\vendor\symfony\console\Application.php(187): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 C:\wamp64\www\myproject\vendor\symfony\console\Application.php(118): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(121): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 C:\wamp64\www\myproject\artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 {main}  

另外,phpinfo()中的PostgreSQL(libpq)版本是9.4.4,尽管我安装了PostgreSQL 9.6,但不确定这是否正确。。

共有3个答案

沈龙光
2023-03-14

您还必须在本地安装postgres驱动程序。在macOS上,您可以使用brew。

根据您的PHP版本(在终端中尝试PHP-v),使用以下命令:

brew install php71-pdo-pgsql
brew install php70-pdo-pgsql
brew install php55-pdo-pgsql

此外,如果您正在运行代客泊车,请确保在之后重新启动代客泊车。

秦飞航
2023-03-14

你必须寻找一些东西,

确保在app/config/database.php中配置默认密钥

对于postgres,这将是'默认'=

检查是否安装了正确的PHP扩展。您需要安装并启用pdo_pgsql.sopgsql.so。关于如何做到这一点的说明因操作系统而异。

取消注释扩展=pdo_pgsql.so扩展=pgsql.so中的php.ini

现在将libpq.dllC:\wamp\bin\php\php5.*\复制到C:\wamp\bin\apache*\bin并重新启动所有服务。

如果问题仍然存在,请查看环境变量。

让我知道结果。

仉臻
2023-03-14

config\database.php下是一个文件名database.php

这里像这样选择default topgsql

'default' => env('DB_CONNECTION', 'pgsql')

这里修改与您的所有细节

'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ]

重新启动服务器,希望它能够连接

 类似资料:
  • 我有一个IP地址每次我收到连接失败的消息时,我都尝试了很多连接到该服务器的方法。出于安全原因,我隐藏了用户名和密码。 代码: 我有例外 组织。postgresql。util。PSQLException:连接尝试失败。在org。postgresql。果心v3。连接工厂impl。org上的openConnectionImpl(ConnectionFactoryImpl.java:292)。postgr

  • 我收到一个错误: 编辑:链接到堆栈跟踪 下面是错误的最后一个“部分”,表示这是一个: ' 我的URL字符串:“jdbc:mysql://127.0.0.1:3306/schemaname?useUnicode=true 我的连接代码片段: 我已经使用了正确的模式/库名、用户名、密码和所有其他所需的“需求”。我还设置了绑定地址为,端口为。数据库是在线的,我已经确保服务正在运行。

  • 问题 当我启动超过11个Spring Boot项目并行时,我无法从数据库中检索数据。我只得到空白的JSON响应。但是如果我只启动了不到11个项目,那么在那个时候,我就能够得到微服务的结果。当我从12号发球开始的时候有问题。 但这并没有解决我的问题。并且在我的中为连接池添加了其他行, 即使这样也不能解决我的问题。仍然,我只能启动最多12个Spring引导项目一次。 在pom.xml中添加了以下内容,

  • 用Python来编写网站,必须要能够通过python操作数据库,所谓操作数据库,就是通过python实现对数据的连接,以及对记录、字段的各种操作。上一讲提到的那种操作方式,是看官直接通过交互模式来操作数据库。 安装python-MySQLdb 要想通过python来操作数据库,还需要在已经安装了mysql的基础上安装一个称之为mysqldb的库,它是一个接口程序,python通过它对mysql数据

  • 我正在尝试连接到Amazon上的EC2实例。连接错误时-权限被拒绝(公钥)。安装cmhod 400 mypem.pem文件没有帮助。连接日志: openssh_6.2p2,OSSLShim 0.9.8r 2011年12月8日debug1:读取配置数据/etc/ssh_config debug1:/etc/ssh_config行20:应用*debug1:连接到54.214.31.168[54.214

  • 本文向大家介绍python连接PostgreSQL数据库的过程详解,包括了python连接PostgreSQL数据库的过程详解的使用技巧和注意事项,需要的朋友参考一下 1. 常用模块 # 连接数据库 connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象 # 打开一个操作整个数据库的光标 连接对象可以创建光标用来执行SQL语句 # 执行一个创建表的SQL语句 光标可以使用exe