谷歌应用程序引擎:如何连接到云SQL与Zend DB(Google App Engine: How

2019-10-19 00:44发布

我有一个使用了Zend DB适配器类与MySQL连接的Zend Framework 1.12申请。 我需要尽快部署并正在调查谷歌应用程序引擎。

我现在的问题是,我无法连接应用程序谷歌的Cloud SQL。 此谷歌网页, https://developers.google.com/appengine/docs/php/cloud-sql/ ,给出了使用PHP和PDO的例子。 它使用一个DSN作为参数。

在Zend DB适配器类不采取DSN作为参数,而是构造它从它接收到的其它参数。 我试图工程师在Zend DB适配器PARAMS给予正确的DSN,但仍然没有运气。 这里是我的尝试:

$config = new Zend_Config(
    array(
        'database' => array(
            'adapter' => 'Pdo_Mysql',
            'params'  => array(
                'host'     => 'test-instance',
                'dbname'   => 'my_db_name',
                'username' => 'root',
                'password' => 'rootpassword',
                'charset'  => 'utf8',
                'driver_options'  => [
                    'unix_socket' => '/cloudsql/test-project'
                ]
            )
        )
    )
);

try {
    $this->_db = Zend_Db::factory($config->database);
    $this->_db->getConnection();
} catch (Exception $e){    
    Zend_Registry::get('logger')->debug('Cannot create the connection...');
    Zend_Registry::get('logger')->debug(print_r($e, true));
}

消息中的例外是

MySQL驱动程序当前未安装

有任何想法吗?

在这个阶段,我只是从GAE SDK想它在我的桌面上。 我还没有上传应用程序到云中。 我怀疑这是问题,但。 (我的工作站IP被授权使用的Cloud SQL实例)。

Answer 1:

我没有使用Zend框架与AppEngine上我自己,但我的经验(不,我发现它记录任何地方),如果您是从AppEngine应用程序使用“根”用户连接到云SQL,你不应该提供密码,或连接失败。

此外如图所示的文件(这里:在https://developers.google.com/appengine/docs/php/cloud-sql/#PHP_Connecting_to_your_Cloud_SQL_instance ),该unix_socket选项应该是在格式/ CLOUDSQL /项目名称:实例-名称

所以我会尝试重写你的$的配置如下:

$config = new Zend_Config(
    array(
        'database' => array(
            'adapter' => 'Pdo_Mysql',
            'params'  => array(
                'host'     => '',
                'dbname'   => 'my_db_name',
                'username' => 'root',
                'password' => '',
                'charset'  => 'utf8',
                'driver_options'  => [
                    'unix_socket' => '/cloudsql/test-project:test-instance'
                ]
            )
        )
    )
);


文章来源: Google App Engine: How to connect to Cloud SQL with Zend DB