Php 无法通过ZF2中带有Pdo_Mysql的Google App Engine连接到Google Cloud SQL
我已经尝试解决这个问题好几天了,没有任何结果。使用默认php pdo对象时,我可以连接到数据库:Php 无法通过ZF2中带有Pdo_Mysql的Google App Engine连接到Google Cloud SQL,php,mysql,google-app-engine,zend-framework2,google-cloud-sql,Php,Mysql,Google App Engine,Zend Framework2,Google Cloud Sql,我已经尝试解决这个问题好几天了,没有任何结果。使用默认php pdo对象时,我可以连接到数据库: $db = new \PDO('mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test', 'root', // username '' // password ); 但是当尝试连接ZF2适配器时,连接只是超时 'db' => array(
$db = new \PDO('mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
'root', // username
'' // password
);
但是当尝试连接ZF2适配器时,连接只是超时
'db' => array(
'driver' => 'Pdo_Mysql',
'database' => 'test',
'username' => 'root',
'unix_socket' => '/cloudsql/project-id:database-instance',
),
我很确定问题出在unix_套接字上,因为我可以从本地主机直接连接到云SQL server,而无需套接字:
'db' => array(
'driver' => 'Pdo_Mysql',
'host' => 'xxx.xxx.xxx.xxx',
'database' => 'test',
'username' => 'user',
'password' => 'password',
),
我缺少什么?
unix\u socket
不是pdo驱动程序的可识别选项()。试试这个
'db' => array(
'dsn' => 'mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
'username' => 'user',
'password' => 'password',
)
我认为这个
'/cloudsql/project id:database instance'
部分应该出现在host字段中,尽管我使用的是另一个数据库驱动程序。我对此表示怀疑,我也尝试过,但出现了错误:警告:PDO:\uu construct():php_network_getaddresses:gethostbyname失败是否尝试从本地开发环境连接应用程序引擎实例?否,仅在部署到应用程序引擎后。我对本地和生产有单独的db配置非常感谢@Mars,这确实是问题所在,你救了我。我错误地理解了unix_套接字是一个选项,但它适用于不同的驱动程序。