星期二, 8月 27, 2013

zend framework pdo adapter use mssql and mssql driver is not currently installed solution

記錄一下錯誤。不知道是不是Zend patch 有問題


說這個path 可以自動猜對的driver,可是卻沒注意到該檔案上方預設了。所以如果傳入參數也沒有跑Switch 判斷、修改。

    protected $_pdoType = 'mssql';

害我不斷產生兩種錯誤。
  1. 使用 Adapter_PDO_MSSQL產生:mssql driver is not currently installed
  2. 使用 Adapter_Sqlsrv 產生:Sqlsrv extension is required for this adapter but the extension is not loaded
使得我不斷找是哪個沒有裝到或者沒有載入。

看了 http://www.php.net/manual/en/ref.pdo-dblib.php 說明知道,Sqlsrv 是指給windows 使用,也很多網路上找到的解法都是裝新的windows 專用 driver就解決了。

但是我的環境在 CentOS 所以一直找不到Sqlsrv driver (根本沒有,當然找不到XD)

接著回正題說到,Zend_Db_Adapter 說明頁提到要用 php-dblib 連 MSSQL

在 PHP 5.3.x 似乎找不到 PDO MSSQL driver ,而 Zend_Db_Adapter_Pdo_Mssql 又被預設成 'mssql'。

解法:
  1. 建立的時候增加 'pdoType' => 'dblib'
  2. 修改 Zend_Db_Adapter_Pdo_Mssql 參數 $_pdoType = 'mssql'; 改成 protected $_pdoType = 'dblib';
NOTE:Zend Framework 1.12.3

沒有留言:

張貼留言