Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我能';t使用Laravel连接到Postgresql_Php_Laravel_Postgresql_Doctrine Orm_Laravel 7 - Fatal编程技术网

Php 我能';t使用Laravel连接到Postgresql

Php 我能';t使用Laravel连接到Postgresql,php,laravel,postgresql,doctrine-orm,laravel-7,Php,Laravel,Postgresql,Doctrine Orm,Laravel 7,我在使用Postgresql 12.3和Laravel 7.24.0时遇到问题 以下是我收到的错误消息: Illuminate\Database\QueryException could not find driver (SQL: insert into "posts" ("title", "content", "updated_at", "created_at") values (aze, bc

我在使用Postgresql 12.3和Laravel 7.24.0时遇到问题 以下是我收到的错误消息:

Illuminate\Database\QueryException
could not find driver (SQL: insert into "posts" ("title", "content", "updated_at", "created_at") values (aze, bcb, 2020-08-11 18:02:26, 2020-08-11 18:02:26) returning "id") 
这是我的设置(我用DBeaver和命令行测试了设置(主机、端口、用户名、密码和db_名称):

.env:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=<db_name>
DB_USERNAME=<user_name>
DB_PASSWORD=<password>
  • 我运行了
    php artisan tinker
    ,然后运行了
    DB::connection()->getPdo()并得到以下结果:
  • 这显然是我应该得到的

  • 我从DATABASE.php中删除了DATABASE_URL,因为它没有定义。我想如果设置了所有其他参数,就没有必要了

  • 我经常收到同样的信息,经过几个小时的研究,我有点不知所措……

    好吧,所以按照@nibnut的建议,我去禁用了Apache的PHP7.2,启用了7.4 在进行此操作时,我检查了CLI的版本,并收到以下消息:

    PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /usr/lib/php/20190902/pdo_pgsql (/usr/lib/php/20190902/pdo_pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0
    
    对于那些感兴趣的人,我找到了如何安装它

    它现在可以工作了,我的数据保存在数据库中,尽管奇怪的是,我在运行
    php-v


    谢谢你的帮助@nibnut

    嗨,奥利弗!那么,当您执行原始查询(步骤4)时,是否会产生相同的错误?还是原始查询有效?嗨@nibnut!不,没用。无论我尝试了什么,我总是得到完全相同的错误消息OK-这听起来很傻,但是。。。您确定您编辑的php.ini文件是apache或CLI使用的文件吗?(取决于您运行测试的位置/方式)您是否尝试过phpinfo()以确认PDO和PGSWL驱动程序确实已激活?是的,我是:-)我在目录apache2中编辑了php.ini,而不是cli(这是phpinfo中提到的)。我在浏览器中测试。现在关于PDO,我可以在phpinfo()中看到,它没有说它是否已启用:在“PDO”下,它说“PDO驱动程序”=>“已启用”=“无值”。(但重申一下,在php.ini中启用了pdo_pgsql和pgsql)并且根本没有提到PGSWL?
    $sqlQuery = "insert into posts 
                 (title, post, updated_at, created_at) values
                 ('aze', 'bcb', '2020-08-11 17:10:47', '2020-08-11 17:10:48') returning id";
    $result = DB::select(DB::raw($sqlQuery));
    
    => Doctrine\DBAL\Driver\PDOConnection {#3085
         inTransaction: false,
         attributes: {
           CASE: NATURAL,
           ERRMODE: EXCEPTION,
           PERSISTENT: false,
           DRIVER_NAME: "pgsql",
           SERVER_INFO: "PID: 27281; Client Encoding: UTF8; Is Superuser: off; Session Authorization: mespas; Date Style: ISO, DMY",
           ORACLE_NULLS: NATURAL,
           CLIENT_VERSION: "10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)",
           SERVER_VERSION: "12.3 (Ubuntu 12.3-1.pgdg18.04+1)",
           STATEMENT_CLASS: [
             "Doctrine\DBAL\Driver\PDOStatement",
             [],
           ],
           EMULATE_PREPARES: false,
           CONNECTION_STATUS: "Connection OK; waiting to send.",
           DEFAULT_FETCH_MODE: BOTH,
         },
       }
    
    PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: /usr/lib/php/20190902/pdo_pgsql (/usr/lib/php/20190902/pdo_pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/pdo_pgsql.so (/usr/lib/php/20190902/pdo_pgsql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0