2012-06-18 2 views
10

Я пытаюсь использовать Doctrine 2 (для Symfony 2) для подключения к MSSQLServer с Linux-машины.Подключение Doctrine 2 к MSSQL для SYMFONY 2 В Linux

Я установил pdo_dblib (драйвер PDO для FreeTDS/Sybase DB-lib) и могу подключиться к серверу db через tsql в командной строке и из php cli. Таким образом, я знаю, что это работает.

В моем файле Symfony/app/config/parameters.ini я указал database_driver = "pdo_sqlsrv" в качестве драйвера базы данных (поскольку я читал, что это будет обрабатываться db_lib), но при попытке запустить команду create database (с помощью команды) Я получаю сообщение об ошибке:

Could not create database for connection named could not find driver

затем я изменил водитель database_driver="pdo_dblib" и теперь я получаю сообщение об ошибке:

[Doctrine\DBAL\DBALException]
The given 'driver' pdo_dblib is unknown, Doctrine currently supports only the following drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv

Таким образом, кажется, что для подключения к MSSQL моим единственным опция pdo_sqlsrv, поэтому я пошел, чтобы установить это. Однако I have just discovered here, что

The PDO_SQLSRV extension is only compatible with PHP running on Windows.

Таким образом, водитель поддерживается доктриной и те, которые доступны для использования на Linux, кажется, взаимно эксклюзивным. Из поиска я не нашел примеров того, что эта проблема была решена до сих пор (один из них отметил проблему как решение, но когда я прочитал нить, он просто переместил его dev env в окно окна ... не совсем то, что у меня было в уме!).

+0

Пожалуйста, посмотрите здесь: http://stackoverflow.com/questions/8492941/doctrine-2-how-to-add-custom-dbal-driver и оставьте сообщение, если неподтвержденный ответ вам поможет. – hakre

+0

Привет, Хакре, спасибо за ваш ответ. Я прочитал ваше сообщение и понял, что вы описываете, но откуда вы взяли этот класс? driver_class: Doctrine \ DBAL \ Driver \ MsSql \ Driver Вам нужно было вручную скопировать его откуда-нибудь? Как уже упоминалось, я использую pdo_dblib. Rob Ganly –

ответ

8

Под linux (по крайней мере, на дистрибутивах на Debian) php нуждается в пакете php5-sybase, который поддерживает Sybase и MSSql.

Если вы используете дистрибутив на основе Debian не вы хотите сделать

$ sudo apt-get install php5-sybase 
$ sudo service apache2 restart 

И

php -r "phpinfo();" | grep "PDO drivers" 

должно дать вам

PDO drivers: dblib, mysql, sqlite, ...

dblib на самом деле, кто нам нужен

Теперь, чтобы использовать этот драйвер с Doctrine, этот пост: Doctrine 2 - How to add custom DBAL driver? помог мне найти ответ.

OP предлагает использовать этот bundle on git, что позволяет работать вместе.

+0

Спасибо Пьер, я нашел это сообщение, которое вы упомянули при добавлении пользовательского драйвера DBAL. Я также попал на сцену, где я получил ошибку, упомянутую в этом сообщении, т. Е. «Данный« драйвер »pdo_dblib неизвестен».Видя, как это не поддерживалось «из коробки» доктрины2, я был не уверен, будут ли проблемы дальше по линии, если я сделал это изменение, поэтому решил, что нам не нужно * использовать MSSQL для проекта. Вместо этого я использовал MySQL, и это оказалось беспроблемным. Похоже, что у других людей это решение работает, поэтому я приму свой ответ. Еще раз спасибо! Rob Ganly –

+0

Конечно, лучше использовать MySQL или Postgre. Я действительно должен был использовать MSSQL в качестве альтернативного соединителя для чтения внешних данных. –

+0

Да, конечно, имеет смысл использовать MySql с PHP и Doctrine 2/Symfony 2, это было понято и рассмотрено до начала проекта. Однако, видя, что это означает идти против статус-кво в области разработки и производства, я решил очистить маршрут MSSQL. Однако, когда эти проблемы стали очевидными, была сделана взвешенная точка зрения, и этот маршрут был отменен. Такова жизнь разработчика! Теперь отлично работает с MySQL! Спасибо за ваш вклад. :) Роб Ганли –

Смежные вопросы