2014-09-26 62 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);