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 相关的实体抽象
Symfony2 / Doctrine 使 $statement->execute() 不“缓冲”所有值