我无法连接到指向域的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
解决方案,但它没有用。
有没有其他方法可以解决这个问题?
答案 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”(我们不使用它),甚至没有想到它会起作用,但确实如此,并且该站开始正常连接。