2012-01-24 149 views
0

我試圖在Linux上使用cakephp 2.0.5訪問第二個MS SQL數據庫。cakephp 2.0.5 Sqlserver需要數據庫連接

我已經安裝了sqlserver的數據源在配置/ database.php中

public $msdb = array(

'datasource' => 'Database/Sqlserver', 

'persistent' => false, 

'host' => 'xxx.xxx.xxx.xxx', 

'port' => '1433', 

'login' => 'username', 

'password' => 'password', 

'database' => 'DB', 

'prefix' => '', 

); 

但是我得到這個錯誤:

Missing Database Connection

Error: Sqlserver requires a database connection

Error: Confirm you have created the file : app/Config/database.php.

Notice: If you want to customize this error message, create app/View/Errors/missing_connection.ctp.

堆棧跟蹤的CakePHP的

#0 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Model/ConnectionManager.php(101): DboSource->__construct(Array) 

#1 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Model/Model.php(3234): ConnectionManager::getDataSource('msdb') 

#2 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Model/Model.php(1030): Model->setDataSource('msdb') 

#3 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Model/Model.php(3258): Model->setSource('PERSON') 

#4 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Model/Model.php(2483): Model->getDataSource() 

#5 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Controller/Component/PaginatorComponent.php(172): Model->find('all', Array) 

#6 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Controller/Controller.php(1025): PaginatorComponent->paginate(NULL, Array, Array) 

#7 /var/www/html/modip/app/Controller/PersonsController.php(7): Controller->paginate() 

#8 [internal function]: PersonsController->index() 

#9 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Controller/Controller.php(473): ReflectionMethod->invokeArgs(Object(PersonsController), Array) 

#10 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Routing/Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest)) 

#11 /var/www/html/modip/cakephp-cakephp-6864406/lib/Cake/Routing/Dispatcher.php(86): Dispatcher->_invoke(Object(PersonsController), Object(CakeRequest), Object(CakeResponse)) 

#12 /var/www/html/modip/app/webroot/index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) 

#13 {main} 

外面,我可以訪問它沒有任何問題使用

mssql_connect("ip_addr:1433", $user, $pass);

還有什麼我應該做的嗎?

我debuged多一點,並認爲它在

的lib /蛋糕/型號/數據源/數據庫失敗/ Sqlserver.php在

public function enabled() { 

return in_array('sqlsrv', PDO::getAvailableDrivers()); 

} 

有一個在PDO司機沒有SQLSRV 。如果我從varius文檔正確理解,

sqlsrv適用於Windows。

我該如何將它用於linux?

感謝

回答

0

有一個「社區技術預覽」 for running the Microsoft SQL Server ODBC Driver,但我不認爲它提供了你需要的功能。這似乎並沒有與PHP集成,因此也沒有與CakePHP集成。

事實上,我非常確定你需要the SQLSRV PHP extension,這只是Windows。您可以在Windows計算機上運行MS SQL數據庫,並通過與數據庫交互的腳本使數據可用,並託管在返回某種形式的結構化輸出(XML,JSON等)的同一臺計算機上。對於更復雜的查詢,這種方法可能不會削減它,所以你可能會看到一個簡單的REST API實現。

Have a look at this question以及只有兩個答案,但它們包含一些有趣的鏈接,詳細說明問題。

1

我也得到這個錯誤,這是相當誤導。我最終發現用戶[你的用戶名]沒有足夠的權限來訪問數據庫[你的案例中的「DB」]