当尝试连接到Google Cloud SQL时,我收到以下错误:
Connection error
Unable to find the socket transport "unix" - did you forget to enable it when you configured PHP?
我已经试着解决这个问题好几个小时了,但还是一无所获。
我的配置如下(在ZF2Configlocal.php中):
return array(
'db' => array(
'driver' => 'Mysqli',
'host' => '',
'database' => 'ar_captab',
'username' => 'root',
'password' => '',
'driver_options' => [
'unix_socket' => ':/cloudsql/some-app-v1-test:some-db'
]
),
);
我还将我的谷歌应用程序引擎应用程序的应用程序ID添加到云SQL中的访问控制列表(授权应用程序引擎的应用程序)中。
当我尝试运行这个:
$config = $this->getServiceLocator()->get('config');
$adapter = new ZendDbAdapterAdapter($config['db']);
$sql = new ZendDbSqlSql($adapter);
$select = $sql->select();
$select->from('example');
$select->where('1');
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
我得到unix套接字错误。我缺少什么?
终于想通了。我是因为结肠。Mysqli连接不需要它,只需要PDO连接类型。
因此,正确的配置是:
return array(
'db' => array(
'driver' => 'Mysqli',
'host' => '',
'database' => 'some-database',
'username' => 'root',
'password' => '',
'driver_options' => [
'unix_socket' => '/cloudsql/some-app-v1-test:some-db'
]
),
);