【问题标题】:Create Databases Dynamically with Google Cloud SQL and PHP使用 Google Cloud SQL 和 PHP 动态创建数据库
【发布时间】:2014-11-21 05:33:59
【问题描述】:

我正在尝试为每个注册我的网络应用程序的用户创建一个数据库。这个数据库将基于一个模板来存储他们的数据。

我遇到的问题是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 和 Cloud SQL 上完成?

【问题讨论】:

  • 可能用户没有创建数据库的权限。您是否尝试过使用 MySQL 客户端连接到实例?
  • 如果您运行一个不创建数据库的查询会发生什么?例如“SELECT 1;”?
  • SELECT 1; 也会发生同样的事情。

标签: php sql google-app-engine mysqli google-cloud-sql


【解决方案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);

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2021-10-09
    • 1970-01-01
    • 2011-06-24
    • 2020-04-14
    • 2022-01-26
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多