2014-09-26 1 views
1

Я пытаюсь создать базу данных для каждого пользователя, который подписывается на мое веб-приложение. Эта база данных будет основана на шаблоне для хранения их данных.Создание баз данных с помощью Google Cloud SQL и PHP

Проблема, с которой я столкнулся, заключается в том, что Google Could SQL, похоже, не создает базу данных через PHP и MySQL запросов.

Подключение к Instance отлично работает и не вызывает никаких ошибок на основе этого кода:

//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:

Я что-то упустил? Как создать database в экземпляре Cloud SQL через PHP? Спасибо за любой вклад.

Может ли кто-нибудь подтвердить, что это действительно можно сделать на GAE PHP и Cloud SQL?

+0

Возможно, у пользователя нет прав для создания БД. Вы пытались сделать это через соединение с экземпляром с клиентом MySQL? – Mario

+0

Что произойдет, если вы запустите запрос, который не создает базу данных? Например, «SELECT 1;»? – David

+0

То же самое происходит с 'SELECT 1;'. – Guy

ответ

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);