我想使用其 IPv6 地址连接到远程 MySQL 实例(Google Cloud SQL 实例)。
我正在像那样使用 PHP PDO:
$db = new \PDO('mysql:host=<ipv6-address>;port=3306;dbname=<database-name>',
'<username>',
'<password>'
);
但它总是失败并显示以下异常消息:
PDOException: SQLSTATE[HY000] [2002] No route to host
我可以从终端连接到 MySQL 实例,没有任何问题,如下所示:
mysql --host=<ipv6-address> --user=<username> --<password>
任何帮助将不胜感激。
谢谢
最佳答案
以防其他人遇到同样的问题,并为他们节省 2 小时钻研 PHP 源代码的时间,如果您将地址放在方括号中,PDO MySQL IPv6 连接就可以正常工作。
参见:https://github.com/php/php-src/blob/master/main/streams/xp_socket.c#L568
例如
$pdo = new PDO("mysql:host=[1234:5678::42];port=3306;dbname=foo", ...);
关于PHP & PDO : Connect to MySQL using IPv6 address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398160/