连接到db mssql php zend 1.12时出错

时间:2014-01-02 13:46:03

标签: php sql-server zend-framework pdo database-connection

我在使用zend framework 1.12和zend studio连接数据库时遇到问题。 application.ini中连接到db的代码如下:

 resources.db.adapter = pdo_mssql

 resources.db.params.host = "IPADDRESS\SQLEXPRESS"
 resources.db.params.username = sa
 resources.db.params.password = XXXXXXXX
 resources.db.params.dbname = namedb
 resources.db.isDefaultTableAdapter = true
 resources.db.params.pdoType = dblib
 resources.db.params.charset= "utf-8"

数据库在线可用(我查了)但是我收到以下错误:

 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[01002] Adaptive Server connection failed (severity 9)

我知道这个错误是一个连接错误(pdo没有找到db),我在一个论坛中找到了tutorial应该有所帮助(它使用zend框架和相同的库和类型我在mac上使用db)。但我认为pdo类型是在我的机器上的其他地方配置的,因为我在Abstract.php中找不到:

 protected $_pdoType = 'dblib';

pdo类型在application.ini中设置,我之前粘贴的代码。日志说错误在这些行中:

 in /usr/local/zend/var/libraries/Zend_Framework_1/1.12.3/library/Zend/Db/Adapter/Pdo/Abstract.php:129 

            $this->_connection = new PDO(
            $dsn,
            $this->_config['username'],
            $this->_config['password'],
            $this->_config['driver_options']
        );

但是我无法理解我错过了什么..有什么提示吗?

2 个答案:

答案 0 :(得分:1)

我认为rob allen的这篇文章很有用,Zf Coonect To MSSQL

如详细描述,你可以使用以下,

resources.db.adapter = "sqlsrv"
resources.db.host = "host"
resources.db.dbname = "DatabaseName"
resources.db.isDefaultTableAdapter = true 
resources.db.driver_options.ReturnDatesAsStrings = true

希望有助于

来自zend framwork官方文件here的相关DOC。

答案 1 :(得分:1)

尝试以下方法:

Microsoft SQL Server数据库连接信息

db.mssqlServer.adapter          = PDO_MSSQL
db.mssqlServer.config.pdoType   = dblib
db.mssqlServer.config.host      = server_ip_or_url
db.mssqlServer.config.dbname    = database_name
db.mssqlServer.config.username  = "mssql_user"
db.mssqlServer.config.password  = "mssql_password"
db.mssqlServer.config.driver_options.PDO::ATTR_ERRMODE=PDO::ERRMODE_EXCEPTION