1

当我尝试从我的 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 的机器上根本不起作用?

4

4 回答 4

0

我希望这对您有所帮助...我目前正在关注 Zend Framework 2 框架应用程序指南。我的数据库参数需要通过以下方式传递:

    'db' => array(
         'driver'   => 'SQLSRV',
         'hostname' => 'SqlServerName',
         'Database' => 'SqlDatabaseName',
         'uid'      => 'UsertoConnectwith',
         'pwd'      => 'Passwordofusertoconnectwith'
     ),
于 2014-07-08T18:11:25.060 回答
0

问题是您没有安装必要的驱动程序。我对 postgres 有同样的问题,这为我解决了这个问题:

apt-get install php5-pgsql

但是,我不能 100% 确定必须安装什么驱动程序才能使 Sql Server 工作。我确实读过它不再受支持。请参阅:PHP PDO 到 Ubuntu Server 上的 MS SQL Server。简而言之,您最好的选择是使用:

sudo apt-get install php5-sybase

然后连接字符串:

"dblib:host=sever;dbname=dbname"

从我收集的信息来看,这应该可以将您连接到 Sql Server 数据库,但同样,我不能保证这一点,因为我没有设置来测试它。希望有帮助...

于 2013-12-30T08:48:36.393 回答
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;
},

希望这可以帮助。如果这不起作用,还有其他事情发生......让我知道,我可以提供帮助。

干杯。亚历克斯

于 2013-10-26T00:38:01.577 回答
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',
        ),
    ),
);
于 2014-02-25T11:37:40.157 回答