从App Engine连接到Cloud SQL无法正常工作

时间:2014-11-14 15:33:53

标签: php google-app-engine

我试图将我的应用程序(从App Engine)连接到Cloud SQL,我一定错过了一些东西:

  • 我添加了一个Cloud SQL实例
  • 我授权我的应用

  • 我通过PhpMyAdmin添加了一个test_db数据库(授权我的IP并连接到那个),测试了用户&密码工作

  • 最后,我使用以下行部署了一个应用程序(以测试连接):

$dbh = mysqli_init();
var_dump( mysqli_real_connect( $dbh, ':/cloudsql/my_project_id:database_name', 'test_db', 'test_db', 'test_db' ) );
var_dump( mysqli_real_connect( $dbh, 'localhost:/cloudsql/my_project_id:database_name', 'test_db', 'test_db', 'test_db' ) );
var_dump( mysqli_real_connect( $dbh, 'test_db', 'test_db', 'test_db', ':/cloudsql/my_project_id:database_name', 3306 ) );
var_dump( mysqli_real_connect( $dbh, 'test_db', 'test_db', 'test_db', 'localhost:/cloudsql/my_project_id:database_name', 3306 ) );
var_dump( mysqli_real_connect( $dbh, ':/cloudsql/my_project_id:database_name', 'test_db', 'test_db', null, 3306 ) );
var_dump( mysqli_real_connect( $dbh, 'localhost:/cloudsql/my_project_id:database_name', 'test_db', 'test_db', null, 3306 ) );
var_dump( mysqli_real_connect( $dbh, null, 'test_db', 'test_db', 'test_db', ':/cloudsql/my_project_id:database_name', 3306 ) );
var_dump( mysqli_real_connect( $dbh, 'localhost', 'test_db', 'test_db', 'test_db', ':/cloudsql/my_project_id:database_name', 3306 ) );
var_dump( mysqli_real_connect( $dbh, null, 'test_db', 'test_db', 'test_db', ':/cloudsql/my_project_id:database_name' ) );
var_dump( mysqli_real_connect( $dbh, 'localhost', 'test_db', 'test_db', 'test_db', ':/cloudsql/my_project_id:database_name' ) );
var_dump( $dbh->connect_error );

如果这些行返回False或Null(即它们都不起作用),那么这有帮助吗?
(如果有解决方案,请保留mysqli_real_connect(),因为这是WordPress正在使用的内容)

更新:新错误
目前我正在使用这一行:

var_dump( mysqli_real_connect( $dbh, 'localhost', 'test_db', 'test_db', 'test_db', 3306, 'mysql:unix_socket=/cloudsql/my_project_id:database_name' ) );

我收到以下错误

  

无法找到套接字传输" unix" - 你忘记启用了吗?   你配置PHP时呢?

1 个答案:

答案 0 :(得分:1)

基于https://cloud.google.com/appengine/docs/php/cloud-sql/,假设您已经创建了用户“test_db”,密码为“test_db”且可以访问数据库“test_db”,那么您应该

mysqli_real_connect( $dbh, null, 'test_db', 'test_db', 'test_db', null, '/cloudsql/<your-project-id>:<your-instance-name>');