Symfony/Doctrine 超时过期 sqlstate

Posted

技术标签:

【中文标题】Symfony/Doctrine 超时过期 sqlstate【英文标题】:Symfony/Doctrine timeout expired sqlstate 【发布时间】:2020-07-02 13:17:04 【问题描述】:

大家好,我正在尝试连接到我已经在 postgresql 中创建的数据库(我正在使用 PGAdmin4 作为 postgresql 的用户界面)。 我在Symfony CLI version v4.16.3 获得三个不同的超时。

详细来说,我有一个 .env 文件,它获取我的数据库 url:

DATABASE_URL=postgresql://root:password@127.0.0.1:35583/nd2d?serverVersion=12.3

我的doctrice.yaml 是这样设置的:

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: true
        naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

我遇到了问题,但找到了一种方法来解决它们与 postgresql 的 pdo 驱动程序有关。 但是在我启动命令 bin/console make:migration 后,我得到了这 3 个错误:

In AbstractPostgreSQLDriver.php line 73:
                                                                        
  An exception occurred in driver: SQLSTATE[08006] [7] timeout expired



In PDOConnection.php line 31:
                                       
  SQLSTATE[08006] [7] timeout expired

In PDOConnection.php line 27:
                                       
  SQLSTATE[08006] [7] timeout expired

我避免使用 PHP 或任何与之相关的框架来开发重型程序,但这次我别无选择,太多的配置我不能再接受了,现在已经在这上面做了好几个小时了。我错过了什么。 谢谢你:)

【问题讨论】:

我不能 100% 确定解决方案,但第一步是检查凭据是否匹配。其次是检查您的数据库 url(密码或用户名)中是否有无效的 url 字符,因为它是一个 URL。过去有一些问题,但我不记得什么了。希望这会有所帮助。 是的,我监听了错误的端口,我在我的 url 中使用了我的数据库 pgAdmin 的用户界面作为参考,而不是默认的 pg 端口 smdh,我是个白痴,谢谢 :) 【参考方案1】:

错误来自监听错误的端口,我正在监听端口35583,这是 PgAdmin 在网络浏览中显示的端口。

DATABASE_URL=postgresql://root:password@127.0.0.1:35583/nd2d?serverVersion=12.3

我应该监听的端口是5432的默认postgresql端口

【讨论】:

以上是关于Symfony/Doctrine 超时过期 sqlstate的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2/Doctrine - 与普通 SQL 相关的实体抽象

Symfony Doctrine 语法错误或访问冲突:

Symfony2 / Doctrine 使 $statement->execute() 不“缓冲”所有值

sql 2000 超时已过期?怎么办!? 呼唤高手!

[Microsoft][ODBC SQL Server Driver]超时已过期

Symfony 5(Doctrine 2.9),Doctrine 不会为 ManyToOne 自引用关系生成迁移