Я пытаюсь получить доступ ко второй базе данных MS SQL с помощью cakephp 2.0.5 в Linux.
Я установил источник данных Sqlserver в Config / database.php
public $msdb = array(
'datasource' => 'Database/Sqlserver',
'persistent' => false,
'host' => 'xxx.xxx.xxx.xxx',
'port' => '1433',
'login' => 'username',
'password' => 'password',
'database' => 'DB',
'prefix' => '',
);
Однако я получаю эту ошибку:
Отсутствует соединение с базой данных
Ошибка: Sqlserver требует подключения к базе данных
Ошибка: подтвердите, что вы создали файл: app / Config / database.php.
Примечание. Если вы хотите настроить это сообщение об ошибке, создайте app / View / Errors / missing_connection.ctp.
Трассировка стека
#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}
За пределами CakePHP я могу без проблем получить к нему доступ, используя
.
mssql_connect ("ip_addr: 1433", $ user, $ pass);
Есть ли что-то еще, что я должен сделать?
Я отладил его немного больше и вижу, что он не работает в
lib / Cake / Model / Datasource / Database / Sqlserver.php в
public function enabled() {
return in_array('sqlsrv', PDO::getAvailableDrivers());
}
В драйверах PDO нет sqlsrv. Если я правильно понимаю из различных документов,
sqlsrv для Windows.
Как я могу использовать его для Linux?
Спасибо