【问题标题】:PostgreSQL errors on symfony server launchsymfony 服务器启动时的 PostgreSQL 错误
【发布时间】:2021-08-22 00:32:59
【问题描述】:

我正在学习 Symfony, 我创建我的项目:symfony new myproject --full 在此之后我直接运行symfony serve

在控制台中我收到了这些错误:

Tailing Web Server log file (/Users/ben/.symfony/log/cd52af540b09d661e4ffb4f5029da4bbaf3586a9.log)
Tailing PHP-FPM log file (/Users/ben/.symfony/log/cd52af540b09d661e4ffb4f5029da4bbaf3586a9/53fb8ec204547646acb3461995e4da5a54cc7575.log)
                                                                                                                        
 [OK] Web server listening                                                                                              
      The Web server is using PHP FPM 7.3.11                                                                            
      https://127.0.0.1:8000                                                                                            
                                                                                                                        

[Web Server ] Jun  3 23:38:48 |DEBUG  | PHP    Reloading PHP versions 
[Web Server ] Jun  3 23:38:48 |DEBUG  | PHP    Using PHP version 7.3.11 (from default version in $PATH) 
[Application] Jun  3 21:29:59 |CRITICA| REQUES Uncaught PHP Exception Doctrine\DBAL\Exception\ConnectionException: "An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused    Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432?" at /Users/ben/Desktop/symfonytuto/demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php line 96 
[Application] Jun  3 21:29:59 |CRITICA| REQUES Exception thrown when handling an exception (Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused   Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? at /Users/ben/Desktop/symfonytuto/demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php line 96) 
[Application] Jun  3 21:29:59 |CRITICA| PHP    Uncaught Exception: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused     Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? 
[Application] Jun  3 21:37:59 |ERROR  | REQUES Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET https://127.0.0.1:8000/"" at /Users/ben/Desktop/symfonytuto/demo/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 
[Application] Jun  3 21:38:00 |ERROR  | REQUES Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET https://127.0.0.1:8000/favicon.ico" (from "https://127.0.0.1:8000/")" at /Users/ben/Desktop/symfonytuto/demo/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 
[Application] Jun  3 21:38:00 |CRITICA| REQUES Exception thrown when handling an exception (Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused   Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? at /Users/ben/Desktop/symfonytuto/demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php line 96) 
[Application] Jun  3 21:38:00 |CRITICA| PHP    Uncaught Exception: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused     Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? 
[Application] Jun  3 21:38:00 |CRITICA| REQUES Uncaught PHP Exception Doctrine\DBAL\Exception\ConnectionException: "An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused    Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432?" at /Users/ben/Desktop/symfonytuto/demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php line 96 
[Application] Jun  3 21:38:00 |CRITICA| REQUES Exception thrown when handling an exception (Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused   Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? at /Users/ben/Desktop/symfonytuto/demo/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php line 96) 
[Application] Jun  3 21:38:00 |CRITICA| PHP    Uncaught Exception: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused     Is the server running on host "127.0.0.1" and accepting     TCP/IP connections on port 5432? 
[Web Server ] Jun  3 23:38:48 |INFO   | PHP    listening path="/usr/sbin/php-fpm" php="7.3.11" port=50170
[PHP-FPM    ] Jun  3 23:38:48 |NOTICE | FPM    fpm is running, pid 1240 
[PHP-FPM    ] Jun  3 23:38:48 |NOTICE | FPM    ready to handle connections 

在此之后 Symfony 的默认页面加载正确,但是当我添加到 url 的路由时,例如:https://127.0.0.1:8000/testtt 我收到此错误:

An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?

(应该是“这条路线不存在”之类的吧?)

请告诉我如何为您提供有关我的问题的更多信息!

非常感谢!

【问题讨论】:

  • Doctrine Migrations Bundle 需要在开发模式下为配置文件栏建立一个实际的数据库连接。删除捆绑包(如果需要,可以稍后重新安装)或创建数据库并调整凭据。顺便说一句,当没有定义路由时,会出现您所谓的“默认页面”。一旦你定义了一个,你就会开始得到这些类型的错误。
  • 嗨@Cerad 谢谢你的回答,我在 Udemy.com 上学习 Symfony 课程,他没有创建任何数据库,或者删除了一个包,他的错误是“这条路线不存在”或其他什么像那样..所以很奇怪我必须做他没有做的事情才能正常工作..但是如果别无选择,请给我有关您的解决方案的更多详细信息(如何进行)非常感谢您的帮助
  • 顺便说一句,我的项目还没有使用数据库,我只是创建了项目并启动了服务器
  • 只需做一个“作曲家删除学说/迁移”,问题就会消失。无论您是否使用数据库,您都会在开发模式下收到此错误。只是其中之一。
  • @Cerad 删除教义/doctrine-migrations-bundle 有效,但是,你能解释一下为什么我需要删除它而不是课程的老师吗?另外,也许我将来会需要它?感谢您的帮助!

标签: postgresql symfony pdo


【解决方案1】:

这个问题经常出现,我认为在问题解决之前答案是合适的。

假设您刚刚创建了一个新的 Symfony 网站骨架应用程序,添加了一个新控制器并启动了开发服务器。您导航到新路线并抛出异常。获取“未找到驱动程序”或“可以连接到服务器”。这当然有点出乎意料,因为您还没有对数据库做任何事情。

问题在于 Doctrine 迁移包为 Symfony 的分析器栏提供了一个数据收集器,当在开发模式下运行时,它会显示在浏览器页面的底部。数据收集器需要连接到数据库才能收集迁移数据。它不关心没有数据库的事实。它只是尝试连接并最终抛出异常。

我为此开了一个issue。我仍然不完全确定这是功能还是错误。如果您愿意,请随时对问题发表评论。

这是一个相当新的问题,尽管我没有准确跟踪它何时首次出现。因此,许多现有的教程和分步指南都没有提到它。将其视为您的开发经验的一部分。学习如何阅读异常非常重要。

有几种解决方案。如果您打算使用数据库,请继续自己创建一个数据库并调整 DATABASE_URL 以指向它。数据库可以为空。迁移数据收集器只需要能够连接到它。在我的本地开发机器上,我实际上创建了一个名为 db_name 的数据库,只是为了避免出现此错误消息。

第二种解决方案是删除迁移包

composer remove doctrine/doctrine-migrations-bundle

问题就消失了。如果以后您需要迁移,那么只需使用 composer require 重新安装它。

【讨论】:

  • 这应该被添加到文档“创建您的首页”或快速修复,因为从第一次文档练习中得到这个错误是非常令人困惑和令人沮丧的。也只是我或“找不到驱动程序”无助于了解正在发生的事情吗?
  • 实际上已经进行了修复。只是还没有发布。实际消息确实来自数据库系统的核心,并且相当准确。至少对我来说,当你不使用数据库时出现数据库错误只是一个惊喜。
  • 当我运行 composer remove 学说/doctrine-migrations-bundle 时,它​​只会在重新加载页面时导致“在 ArrayLoader.php 第 44 行:未知包没有定义名称”。刚刚完成“创建您的第一页”教程并遇到了这个意想不到的障碍。
  • Bumping cmets 是不受欢迎的,通常几乎没有用处。要么有人被通知,要么他们没有。多次发布相同的内容很烦人。
【解决方案2】:

我有另一个解决方案可以解决问题,而无需使用composer remove ... 删除包。

/config/bundles.php中注释掉Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],

然后将/config/packages/doctrine_migrations.yaml 上移一个目录,这样它就不会再被包含在内了。

这对新开发者来说可能不会那么吓人。

【讨论】:

    【解决方案3】:

    如果您想访问 localhost.../lucky/number 时出现问题,请转到“文件夹名称”下的 .env 文件并取消注释这一行:

    DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"

    其余的使用 mySQl 和 Postgres,评论它们。

    希望它对你有用。 :)

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2011-07-25
      • 2013-05-05
      • 1970-01-01
      相关资源
      最近更新 更多