2014-09-26 47 views
1

我想为每个注册了我的web应用的用户创建一个数据库。这个数据库将基于一个模板来存储他们的数据。使用Google Cloud SQL和PHP动态创建数据库

我遇到的问题是,Google Could SQL似乎没有通过PHPMySQL查询创建数据库。

连接到该实例工作正常,没有触发基于此代码中的错误:

//CLOUD SQL CONNECTION FOR SUBSCRIPTIONS 
     $hostname = details; 
     $username = details; 
     $password = details; 

     $port = details; 
     $socket = details; 

     $connection = new mysqli($hostname, $username, $password, $port, $socket); 

     // Check Connection 
     if($connection->connect_error) { 
      trigger_error('Connection failed: ' . $connection->connect_error, E_USER_ERROR); 
     } 

然而,当我去创建一个简单的数据库,mysqli失败,没有一个错误...:

//Create Database 
     $username = 'account'; 
     $database = 'sub_'. $username .'_db'; 

     $query = "CREATE DATABASE IF NOT EXISTS `{$database}`;"; 

     if(mysqli_query($connection, $query)) { 
      echo "Database my_db created successfully"; 
     } else { 
      echo "Error creating database: " . mysqli_error($connection); 
     } 

这是简单的输出:Error creating database:

我错过了什么吗?如何通过PHPCloud SQL实例中创建database?感谢您的任何意见。

任何人都可以证实,这实际上可以在GAE PHP和云SQL上完成吗?

+0

用户可能没有创建数据库的权限。你是否试图通过与MySQL客户端的实例连接来实现它? – Mario 2014-09-26 10:35:12

+0

如果您运行不会创建数据库的查询,会发生什么情况?例如“SELECT 1;”? – David 2014-09-26 19:47:21

+0

'SELECT 1;'发生同样的事情。 – Guy 2014-09-28 14:01:49

回答

1

看来$connection变量实际上是NULL尽管没有引发错误。这为我工作,但:

我连接到现有的database

//CLOUD SQL CONNECTION FOR SUBSCRIPTIONS 
     $hostname = details; 
     $username = details; 
     $password = details; 
     $db = details; 
     $port = details; 
     $socket = details; 

     $connection = new mysqli($hostname, $username, $password, $db, $port, $socket); 

     // Check Connection 
     if($connection->connect_error) { 
      trigger_error('Connection failed: ' . $connection->connect_error, E_USER_ERROR); 
     } 

然后,我创建了一个新database

//Create Database 
     $username = 'account'; 
     $database = 'sub_'. $username .'_db'; 

     $query = "CREATE DATABASE IF NOT EXISTS `{$database}`;"; 

     if(mysqli_query($connection, $query)) { 
      echo "Database my_db created successfully"; 
     } else { 
      echo "Error creating database: " . mysqli_error($connection); 
     } 

然后用mysqli_select_db()选择新创建的database

//Select Newly Created DB 
      mysqli_select_db($connection, $database);