Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Google应用程序引擎:如何使用Zend DB连接到云SQL_Php_Mysql_Sql_Google App Engine_Zend Framework - Fatal编程技术网

Php Google应用程序引擎:如何使用Zend DB连接到云SQL

Php Google应用程序引擎:如何使用Zend DB连接到云SQL,php,mysql,sql,google-app-engine,zend-framework,Php,Mysql,Sql,Google App Engine,Zend Framework,我有一个Zend Framework 1.12应用程序,它使用Zend DB Adapter类连接MySql。我需要尽快部署它,并正在调查谷歌应用程序引擎 我目前的问题是无法将应用程序连接到Google Cloud SQL。这个Google页面给出了一个使用PHP和PDO的示例。它使用DSN作为参数 Zend DB Adapter类不将DSN作为参数,而是从它接收的其他参数构造它。我曾尝试设计Zend DB适配器参数以提供正确的DSN,但仍然不走运。以下是我的尝试: $config = new

我有一个Zend Framework 1.12应用程序,它使用Zend DB Adapter类连接MySql。我需要尽快部署它,并正在调查谷歌应用程序引擎

我目前的问题是无法将应用程序连接到Google Cloud SQL。这个Google页面给出了一个使用PHP和PDO的示例。它使用DSN作为参数

Zend DB Adapter类不将DSN作为参数,而是从它接收的其他参数构造它。我曾尝试设计Zend DB适配器参数以提供正确的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被授权使用云Sql实例)。

我本人没有在AppEngine上使用Zend Framework,但根据我的经验(并非我在任何地方都发现它),如果您使用“root”用户从AppEngine应用程序连接到云Sql,则不应提供密码,否则无法连接

同样如文档(此处:)所示,unix_套接字选项的格式应为/cloudsql/project name:instance name

因此,我将尝试按如下方式重写您的$config:

$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'
                ]
            )
        )
    )
);

我本人没有在AppEngine中使用Zend框架,但根据我的经验(并非我在任何地方都发现它),如果您使用“root”用户从AppEngine应用程序连接到云SQL,则不应提供密码,否则无法连接

同样如文档(此处:)所示,unix_套接字选项的格式应为/cloudsql/project name:instance name

因此,我将尝试按如下方式重写您的$config:

$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'
                ]
            )
        )
    )
);

绝对正确如果您已经设置了
root
用户密码,请不要忘记删除它…..绝对正确如果您已经设置了
root
用户密码,请不要忘记删除它。。。。。