MySQL错误"无法获取您的地址的主机名"用PHP

时间:2016-01-28 14:16:07

标签: php mysql

我无法连接到指向域的SQL数据库。我的connect.php会返回以下警告:

  

警告:mysqli :: mysqli()[mysqli.mysqli] :( HY000 / 1042):无法获取您地址的主机名

connect.php

<?php
    $server = "agenciaeficacia.com.br";
    $user = "my-user";
    $pass = "my-password";
    $db = "my-db";

    // CRIA CONEXÃO
    $conexao = new mysqli($server, $user, $pass, $db);

    // CHECA CONEXÃO
    if ($conexao->connect_error) {
        echo "Falha ao conectar com o banco de dados.";
    }   

    date_default_timezone_set('America/Sao_Paulo');
?>

奇怪的是,连接可以在localhost上运行,但是当我将其上传到服务器时(除非我使用localhost而不是我的域)。 我已经尝试了skip-name-resolve解决方案,但它没有用。

有没有其他方法可以解决这个问题?

3 个答案:

答案 0 :(得分:0)

我有一段时间有这样的问题,只有当我禁用DNS查找时它才有用。如果这是您的选项,那么您可以更改my.cnf或my.ini

的[mysqld]

skip-name-resolve

答案 1 :(得分:0)

看到这个: https://serverfault.com/questions/174242/error-connecting-remote-mysql-server-error-1042-hy000-cant-get-hostname-for 注意:&#34; ...在这种情况下,您只能在MySQL授权表中使用IP号码。&#34; 所以你可能在授权表中有主机名,而你的mysql服务器没有DNS解析器工作..

答案 2 :(得分:0)

当我在网络适配器上关闭TCP / IPv6时,该错误为我解决了。

我打算更改my.ini / my.cnf,但是所有其他站点在服务器上使用相同的设置都可以正常工作,因此在尝试使用主机的IP地址并仍然遇到该错误后,我当时正在通过“控制面板”查看网络适配器设置,并且未选中“ TCP / IPv6”(我们不使用它),甚至没有想到它会起作用,但确实如此,并且该站开始正常连接。