当我尝试从我的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的机器上根本不起作用?
答案 0 :(得分:0)
我总是这样准备就绪,使用dist文件在你完成部署时设置正确的连接参数:
本地配置文件
'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;
},
希望这会有所帮助。如果这不起作用,还会有其他事情发生..让我知道,我可以提供帮助。
干杯。 亚历
答案 1 :(得分:0)
问题是您没有安装必要的驱动程序。我和postgres有同样的问题,这解决了我:
apt-get install php5-pgsql
但是,我不是100%确定必须安装什么驱动程序才能使Sql Server正常工作。我确实读到它不再受支持了。见:PHP PDO to MS SQL Server on Ubuntu Server。简而言之,您最好的选择是使用:
sudo apt-get install php5-sybase
然后连接字符串:
"dblib:host=sever;dbname=dbname"
从我收集到的内容,应该将您连接到Sql Server数据库,但是我再也无法保证这一点,因为我没有设置来测试它。希望有所帮助...
答案 2 :(得分:0)
尝试取出这一行:"// 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',
),
),
);
答案 3 :(得分:0)
我希望这对你有所帮助......我目前正在关注Zend Framework 2骨架应用指南。我的数据库参数需要通过以下方式传递:
'db' => array(
'driver' => 'SQLSRV',
'hostname' => 'SqlServerName',
'Database' => 'SqlDatabaseName',
'uid' => 'UsertoConnectwith',
'pwd' => 'Passwordofusertoconnectwith'
),