2012-01-24 1 views
0

Я пытаюсь получить доступ ко второй базе данных MS SQL с помощью cakephp 2.0.5 в Linux.cakephp 2.0.5 Sqlserver требует подключения к базе данных

Я установки DataSource 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' => '', 

); 

Однако я получаю эту ошибку:

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.

трассировки стека

#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);

Есть ли что-то еще, что я должен делать?

Я debuged это немного больше и увидеть, что он не в

Lib/Cake/модель/Datasource/База данных/Sqlserver.php в

public function enabled() { 

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

} 

Там нет SQLSRV в драйверах PDO , Если я правильно понимаю документы varius,

sqlsrv предназначен для Windows.

Как я могу использовать его для Linux?

Благодаря

ответ

0

Там в «Community Technology Preview» for running the Microsoft SQL Server ODBC Driver, но я не думаю, что обеспечивает необходимую функциональность. Это, похоже, не интегрируется с PHP и, следовательно, не с CakePHP.

На самом деле, я уверен, что вам нужен the SQLSRV PHP extension, который является только Windows. Вы можете запустить базу данных MS SQL на компьютере под управлением Windows и сделать данные доступными через скрипт, взаимодействующий с базой данных и размещенный на том же компьютере, который возвращает некоторую форму структурированного вывода (XML, JSON и т. Д.). Для более сложных запросов, которые подходят, вероятно, не будет сокращать его, поэтому вы, вероятно, будете искать простую реализацию API REST.

Have a look at this question также есть только два ответа, но они содержат некоторые интересные ссылки, детализирующие проблему.

1

Я тоже получал эту ошибку, это довольно обманчиво. В конце концов я узнал, что пользователь [«имя пользователя» в вашем случае] не имел достаточных привилегий для доступа к базе данных [«DB» в вашем случае]