Zend框架2和SQLServer驱动程序问题(zend framework 2 and sqlse

2019-10-18 20:52发布

当我尝试连接到从我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面向机器的工作?

Answer 1:

尝试取出这一行: "// 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',
        ),
    ),
);


Answer 2:

我总是准备好它这样的无故障使用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;
},

希望这可以帮助。 如果这也不行,别的东西是怎么回事..让我知道,我可以提供帮助。

干杯。 亚历克斯



Answer 3:

问题是,你没有安装必要的驱动程序做。 我曾与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这一点,因为我没有设置来测试它。 希望可以帮助...



Answer 4:

我希望这有助于你一些......我目前一起Zend框架2骨架应用指南以下。 需要我的数据库参数通过以下方式传递:

    'db' => array(
         'driver'   => 'SQLSRV',
         'hostname' => 'SqlServerName',
         'Database' => 'SqlDatabaseName',
         'uid'      => 'UsertoConnectwith',
         'pwd'      => 'Passwordofusertoconnectwith'
     ),


文章来源: zend framework 2 and sqlserver driver issues