PHP链接数据库报错 php_network_getaddresses: getaddrinfo failed: Name or service not known

1,项目是用的阿里云数据库,链接是一长串的字符串,类似下面这样的

rr-sdf23djgkjhw2345.mysql.rds.aliyuncs.com

2,如果报上面的错误,先ping 一下这个地址,如果能ping 通,会得到一个ip地址

3,用ip地址替换掉字符串,搞定

4,原因:

    1),这个字符串会被PHP解析成ip地址(redis 的字符串地址也会被解析成ip地址)

    2),有可能会解析错误,就会出现这个问题

    3),好像是和这几个函数有关

    

================================================================================================

第二天更新

今天还在跟这个问题,这个数据库连接原来都好好的,突然就不行了,最后重启了一下php-fpm就搞定了,把解决的流程写出来

1,先ping 这个链接,看是不是通的,我这次是通的

2,通的话说明链接是没问题的,写段代码链接试下

3,然后就报了错误

php_network_getaddresses: getaddrinfo failed: Name or service not known

php_network_getaddresses: getaddrinfo failed: System error

4,网上各种查,先检查一下了一下nginx,有问题,重启了一下nginx,但是问题依然没有解决

5,最后在google上偶然看到一个回答,重启php-fpm,搞定啦,(*^▽^*)开心

原链接,非常感谢!

6,不知道php-fpm是什么,自己好菜-_-||,去学习了
————————————————
版权声明:本文为优快云博主「七个包」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_37500838/article/details/85008432

### Yii 框架中 SQLSTATE[HY000] [2002] 错误解决方案 在处理 `SQLSTATE[HY000] [2002]` 错误时,通常是因为 PHP 主机无法解析 DNS 或者网络配置存在问题[^1]。以下是详细的分析和解决方法: #### 问题根源 该错误的核心原因是数据库连接失败,可能是由于以下原因之一引起的: - **DNS 配置不正确**:如果使用的是域名作为 MySQL 数据库地址,则可能会因为本地主机未能成功解析域名而导致此错误。 - **MySQL 服务未启动**:目标数据库服务器上的 MySQL/MariaDB 服务可能尚未运行或者监听端口被更改。 - **防火墙阻止通信**:某些情况下,防火墙会拦截客户端与数据库之间的 TCP/IP 连接。 #### 解决方案 为了有效解决问题,可以采取如下措施之一或组合方式来修复上述提到的各种潜在因素: ##### 方法一:修改数据库连接字符串中的主机名设置为 IP 地址 通过将 `$host` 参数替换为具体的 IPv4/IPv6 地址而非依赖于名称查找机制能够显著减少此类异常的发生几率。例如,在应用的配置文件里调整参数如下所示[^2]: ```php $host = '127.0.0.1'; $dbname = 'your_database_name_here'; $username = 'db_user'; $password = 'secure_password'; $dsn = "mysql:host={$host};dbname={$dbname};port=3306;charset=utf8"; ``` ##### 方法二:验证并优化系统的 DNS 设置 确认 `/etc/resolv.conf`(Linux/macOS) 文件存在有效的 nameserver 条目;对于 Windows 用户来说则需检查网络适配器属性下的首选及备用 DNS 服务器设定是否合理。另外还可以尝试临时禁用 IPv6 支持以排除干扰[^3]: 编辑 php.ini 并加入下列选项重启 WebServer 后生效: ```ini mysqli.default_host = 127.0.0.1 pdo_mysql.default_socket= ``` ##### 方法三:确保 MySQL Server 正常工作且允许远程访问(如果有需求的话) 登录至 Linux 终端执行命令查看 mysqld 是否处于活动状态(`service mysql status`)以及开放给外部设备接入权限的部分操作指南可查阅官方手册关于 GRANT 和 FLUSH PRIVILEGES 的说明文档链接. --- ### 总结 综合以上几点建议,优先考虑把 host 替换成 localhost 对应的实际 ip 形式即能快速缓解大部分场景下遇到的问题。同时也要记得定期维护好基础环境比如更新驱动程序版本号保持最新稳定版等等良好习惯有助于长期预防类似状况再次发生.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值