2014-11-14 69 views
3

我想我的应用程序(从App引擎)连接到Cloud SQL的,我必须失去了一些东西:从App Engine的连接到云SQL不工作

  • 我加了一个云SQL实例
  • 我授权我的应用程序

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

  • 最后I D用以下行表示应用(测试连接):

$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或空(即他们没有工作),帮助吗?
(如果有一个解决方案,让我们请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

基于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>'); 
+0

也不起作用。我认为现在要解决的主要错误是我在问题底部提到的错误:“无法找到套接字传输”unix“ - 您是否忘记在配置PHP时启用它?” – Asaf 2014-11-19 13:27:20

+0

当您使用此连接进行连接时,错误消息是什么?我还假设你已经在CloudSQL中创建了相应的用户和数据库? – Mars 2014-11-19 19:45:31

+0

这是我现在得到的:“访问拒绝用户'test_db'@'localhost'(使用密码:YES)”,这是没有意义的,因为我能够使用phpmyadmin连接(通过IP地址,但我' d宁愿使用unix socket,因为它更安全很明显..) – Asaf 2014-11-20 08:40:45