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

时间:2020-02-07 14:44:48

标签: php doctrine-orm symfony5

我正在尝试

 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

就像 ikyuchukov 所说,“@”字符会破坏解析。但是在我看来,不是更改密码,而是对这个字符进行 url 编码会做得更好。您可以将其替换为 url 编码的值“%40”。