我有一个由one.com托管的数据库,其中包含以下设置:
PhpMyAdmin: https://dbadmin.one.com
Host: axelerate.be.mysql
Database: axelerate_be
Username: axelerate_be
Password: *****
我想使用树莓派LXTerminal运行的php文件与该数据库建立连接。 当我尝试建立连接时,出现此错误(主机未知):
Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo
failed: Host is onbekend. in C:\xampp\htdocs\twitter\index.php on line
3
Warning: mysqli_connect(): (HY000/2002): php_network_getaddresses:
getaddrinfo failed: Host is onbekend. in
C:\xampp\htdocs\twitter\index.php on line 3 Failed to connect to
MySQL: php_network_getaddresses: getaddrinfo failed: Host is onbekend.
这是我的代码:
// Create connection
$con=mysqli_connect("axelerate.be.mysql","axelerate_be","*******","axelerate_be");
// Check connection
if (mysqli_connect_errno()) {
echo"Failed to connect to MySQL:" . mysqli_connect_error();
}else{
echo"it works!";
}
?>
我的问题:
如何在不编辑任何配置文件的情况下使此连接正常工作? (因此,如果有事情要做,我只想写在php文件中)
谢谢!
我认为您的房东是错的。" .mysql"不是有效的顶级域。 但是,axelerate.be似乎可以访问,可以尝试代替axelerate.be.mysql
基于.mysql的主机是one.com网络中的内部主机,它解析为承载数据库的服务器。 这些主机不适合在one.com主机外部进行连接,并且即使在公共IP上也可以接受来自世界各地的连接。
我知道为什么他们不允许这样做,但是有没有办法用我的树莓派从one.com上的数据库中读取内容? (也许在最坏的情况下,在axelerate.be上创建一个子域来处理连接和事务?)
@Onovar通常的解决方案是公开一个小型Web服务,以使所需的信息可用。根据可用的功能,一个ssh隧道也可以工作,但是我认为one.com不允许通过SSH连接到其Web服务器。
确保主机(axelerate.be.mysql)存在,尝试对其进行ping操作。 正如我所见,它不存在。
ping响应并不表示mysql服务器已启动并正在运行。
@Azrael但是Ping无响应表示主机不存在!多数民众赞成在这个问题。
@Azrael实际上,对ping的无响应通常意味着服务器正在过滤ICMP数据包。但是ping通常会告诉您DNS查找是否失败,这是您感兴趣的。 nslookup和host可能更适合于主机查找。
我认为您最好的猜测是使用一种程序,该程序检查所需的主机是否打开了端口3306(或您尝试连接的数据库使用的任何端口)
One.com不支持mysqli。 你必须用
$db=mysql_connect("example.com.mysql","username","password");
mysql_select_db("database", $db);
myql_ *已过时,您不应再使用此功能。
如果服务器上未安装mySQLi,则Kinda必须使用它。快速浏览主机功能和FAQ将显示未安装mySQLi。