Symfony 5 SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失败:

Symfony 5 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed:

我正在尝试 运行

 php bin/console make:migration

我收到了这些错误

In AbstractMySQLDriver.php line 93:
   An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
 In PDOConnection.php line 31:
    SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
 In PDOConnection.php line 27:
    SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
 In PDOConnection.php line 27:
    PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

我已经检查了我所有的 .env 文件。我已经配置了

DATABASE_URL=mysql://mylocalDb:#fL3@&_{Dx3N@127.0.0.1:3306/LocalDataBase

我已将学说配置更改为使用 server_version: '5.7'。我不确定这是否正确。我刚刚删除了该行前面的#,因为说明您必须配置您的服务器版本。但不确定它指的是哪个服务器。

所以,我的问题是如何在 Symfony 中测试数据库连接。我已经搜索了文档,但无法找到这个问题的明确答案。当我运行

 php bin/console doctrine:database:create

这会产生错误

 In CreateDatabaseDoctrineCommand.php line 82:
   Connection does not contain a 'path' or 'dbname' parameter and cannot be created.

我在更改配置后清除了两次缓存,但仍然收到相同的错误消息。 还有哪些其他方法可以测试数据库连接。

https://symfony.com/doc/current/doctrine.html#configuring-the-database

您的数据库密码包含“@”,这会破坏 Symfony 的解析器,将密码更改为不包含该符号应该可以解决您的问题。

正如 ikyuchukov 所说,“@”字符破坏了解析。但在我看来,与其更改密码,不如 url-encoding 这个字符会做得更好。您可以将其替换为 url 编码值“%40”。