我已经设置了一个运行良好的 Google Cloud SQL,但是我无法使用文档中给出的任何方法进行连接:
PDO
$db = new PDO('mysql:unix_socket=/cloudsql/hello-php:my-cloudsql-instance;charset=utf8','<username>','<password>');
mysql_connect
$conn = mysql_connect(':/cloudsql/hello-php:my-cloudsql-instance', '<username>', '<password>');
mysqli
$sql = new mysqli(null, '<username>', '<password>', null, null, '/cloudsql/hello-php:my-cloudsql-instance');
我可以从 MySQL 工作台远程连接,但每当我尝试使用上述功能从网站尝试时,我都会收到“在'读取初始通信数据包'时与 MySQL 服务器的连接丢失”-但我通过授权网络授予 Cloud SQL 访问权限并检查了 IP给定的。我相信这与我不是试图从 Google App Engine 而是从我自己的开发数据库连接这一事实有关。如何从 Google 外部连接!?
更新:我已经通过各种方式验证了我的 IP,但这段代码仍然无法正常工作。
$host="173.xxx.xx.xxx" <-- given from Google Developers COnsole
$db_username="root";
$db_pasword="xxxx"; <-- password I set after creating the instance
mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect");
此页面给出了错误:
警告:mysql_connect() [function.mysql-connect]:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:第 5 行 /..../connect.php 中的 111 无法连接
当我尝试这个 PDO 连接时,我也得到一个错误:
$dsn = 'mysql:host=173.xxx.xx.xxx;dbname=database_name';
$username = 'root';
$password = 'xxxx';
$dbh = new PDO($dsn, $username, $password);
未捕获的异常 'PDOException' 和消息'SQLSTATE [HY000] [2003] 无法连接到 MySQL 服务器在 '173.xxx.xx.xxx' (111)'