简体   繁体   中英

Cannot connect to Google Cloud SQL through Google App Engine with Pdo_Mysql in ZF2

I have been trying to solve this issue already for a few days without any results. When using default php pdo object I can connect to the database:

$db = new \PDO('mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
          'root',  // username
          ''       // password
        );

But when trying to connect with ZF2 adapter the connection just times out.

'db' => array(
        'driver' => 'Pdo_Mysql',
        'database' => 'test',
        'username' => 'root', 
        'unix_socket' => '/cloudsql/project-id:database-instance',
),

I am quite sure that the problem is somehow with the unix_socket as I can connect to the Cloud SQL server from my localhost directly without socket:

'db' => array(
        'driver' => 'Pdo_Mysql',
        'host' => 'xxx.xxx.xxx.xxx',
        'database' => 'test',
        'username' => 'user',
        'password' => 'password',

),

What I am missing?

unix_socket isn't a recognized option for the pdo driver ( https://github.com/zendframework/zf2/blob/master/library/Zend/Db/Adapter/Driver/Pdo/Connection.php#L164 ). Try this instead

'db' => array(
        'dsn' => 'mysql:unix_socket=/cloudsql/project-id:database-instance;dbname=test',
        'username' => 'user',
        'password' => 'password',    
)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM