当我尝试连接到从我ZF2应用我的SQL Server数据库,如下图所示,
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'sqlsrv:dbname=album;hostname=192.168.0.20',
'username' => 'user',
'password' => 'pass',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
);
我得到这个错误,
File:
/usr/local/zend/apache2/htdocs/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php:289
Message:
Connect Error: could not find driver
我失去了一些东西? 或者说,这并不在所有基于Linux面向机器的工作?
尝试取出这一行: "// PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''"
您的连接说你试图连接MSSQL
,而不是MySQL
。
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'sqlsrv:dbname=album;hostname=192.168.0.20',
'username' => 'user',
'password' => 'pass',
'driver_options' => array(
// PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
);
我总是准备好它这样的无故障使用DIST文件设置PARAMS为您完成部署工作权连接:
本地配置文件
'database' => array(
'connection' => array(
'mysql_master' => array(
'driver' => 'Pdo_Mysql',
'host' => 'host',
'dbname' => 'analytics',
'username' => 'user',
'password' => 'pass',
'charset' => 'UTF8',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
),
),
),
),
然后在我Module.php,我定义这样的工厂(getServiceConfig阵列中):
'Zend\Db\Adapter\Adapter' => function ($sm){
$config = $sm->get('config');
$dbParams = $config['database']['config']['mysql_master'];
$adapter = new \Zend\Db\Adapter\Adapter($dbParams);
return $adapter;
},
希望这可以帮助。 如果这也不行,别的东西是怎么回事..让我知道,我可以提供帮助。
干杯。 亚历克斯
问题是,你没有安装必要的驱动程序做。 我曾与Postgres的同样的问题,这解决了这个问题对我来说:
apt-get install php5-pgsql
不过,我不是100%肯定,必须安装什么驱动程序,以使SQL Server的工作。 我没有读到它不再支持。 看到这一点: Ubuntu的服务器上的PHP PDO到MS SQL服务器 。 概括地说,最好的办法就是宁愿用:
sudo apt-get install php5-sybase
然后连接字符串:
"dblib:host=sever;dbname=dbname"
从我收集,这应该连接到SQL Server数据库,但同样,我不能gaurantee这一点,因为我没有设置来测试它。 希望可以帮助...
我希望这有助于你一些......我目前一起Zend框架2骨架应用指南以下。 需要我的数据库参数通过以下方式传递:
'db' => array(
'driver' => 'SQLSRV',
'hostname' => 'SqlServerName',
'Database' => 'SqlDatabaseName',
'uid' => 'UsertoConnectwith',
'pwd' => 'Passwordofusertoconnectwith'
),