我想使用免费的 IPv6 地址连接到 Google Cloud SQL 实例,而不是购买 IPv4 地址。为此,我查找了我的 IPv6 地址并允许它。我还查找了我的路由器 IPv6 前缀并允许它(据我所知,这应该允许我家庭网络中的所有 PC 访问 SQL 实例)。
下面的代码会产生问题:
$servername = "2001:6532:1234:1:6a4f:e1d7:5d69:52a3";
$username = "looooool";
$password = "superSecretStuff";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
该代码会产生以下错误:
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Users\kjh\Documents\SF WEBSITE\appengine-try-php-master\connect_db.php on line 8
Connection failed: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.
很抱歉,错误消息是德语的,但我不知道该在哪里更改它。第 8 行也是带有该行的行$conn = new mysqli($servername, $username, $password, $dbname);
。我更改了 IP 地址,所以如果它看起来很奇怪,那就是原因。希望你能帮助我。
如果我从 Google 获取 IPv4 地址,它就可以正常工作。
这是来自的转发这里我被告知在这里重新询问,因为这可能是由于我的 ISP 没有分配持久 IPv6 地址造成的。
当我只是想查找我的 IPv6 地址时,我发现了一些奇怪的事情。我去了维斯特梅内普查找我的 IPv6 地址,起初它只显示我的 IPv6 地址,然后当我进行速度测试时,我的 IPv6 地址消失了,从那时起我就只有一个 IPv4 地址。至少所有 IP 地址网站都这么说。同样的事情也发生在谷歌上,当你在谷歌上搜索“我的 IP 地址是什么”时,谷歌会显示你的 IP 地址,起初它显示我的 ipv6,现在它只显示 ipv4。
我的 ISP:Kabel Deutschland
现在我终于有两个问题:
假设我允许我的 IPv6 地址访问云 SQL,并且我的 ISP 没有搞砸我,那么上述代码应该可以工作吗?
有什么方法可以检查我的 ISP 是否在做一些奇怪的事情?
更新:
我尝试在我的计算机(Windows)上完全禁用 IPv4,所以我这样做了,然后重新启动了计算机。重新启动后,我没有从路由器获取 IPv6 地址,因此我再次启用了 IPv4,但我获得了 IPv4 地址,但没有 IPv6 地址。希望这对您有所帮助。
答案1
因此,在迈克尔·汉普顿 (Michael Hampton) 的帮助下,我现在可以自己回答这个问题。
不。IPv6 地址需要放在方括号中。因此,下面的代码应该有效:
$servername = "[2001:6532:1234:1:6a4f:e1d7:5d69:52a3]";
检查的方法是,在获得正确代码后反复尝试。就我的情况而言,我的家庭网络出现了一些奇怪的问题,我重启了所有网络设备,问题就解决了。