无法通过 Google App Engine 与 ZF2 中的 Pdo_Mysql 连接到 Google 云 SQL
Cannot connect to Google Cloud SQL through Google App Engine with Pdo_Mysql in ZF2
几天来我一直在尝试解决这个问题,但没有任何结果。使用默认 php pdo 对象时,我可以连接到数据库:
$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_socket 上,因为我可以直接从我的本地主机连接到云 SQL 服务器而无需套接字:
'db' => array(
'driver' => 'Pdo_Mysql',
'host' => 'xxx.xxx.xxx.xxx',
'database' => 'test',
'username' => 'user',
'password' => 'password',
),
我错过了什么?
unix_socket
不是 pdo 驱动程序 (https://github.com/zendframework/zf2/blob/master/library/Zend/Db/Adapter/Driver/Pdo/Connection.php#L164) 的可识别选项。试试这个
'db' => array(
'dsn' => 'mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
'username' => 'user',
'password' => 'password',
)
几天来我一直在尝试解决这个问题,但没有任何结果。使用默认 php pdo 对象时,我可以连接到数据库:
$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_socket 上,因为我可以直接从我的本地主机连接到云 SQL 服务器而无需套接字:
'db' => array(
'driver' => 'Pdo_Mysql',
'host' => 'xxx.xxx.xxx.xxx',
'database' => 'test',
'username' => 'user',
'password' => 'password',
),
我错过了什么?
unix_socket
不是 pdo 驱动程序 (https://github.com/zendframework/zf2/blob/master/library/Zend/Db/Adapter/Driver/Pdo/Connection.php#L164) 的可识别选项。试试这个
'db' => array(
'dsn' => 'mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
'username' => 'user',
'password' => 'password',
)