Подключение Doctrine 2 к MSSQL для SYMFONY 2 в Linux
Я пытаюсь использовать Doctrine 2 (для Symfony 2) для подключения к MSSQLServer с Linux-машины.
Я установил pdo_dblib (PDO Driver for FreeTDS/Sybase DB-lib) и могу подключиться к серверу db через tsql в командной строке и из php cli. Таким образом, я знаю, что это работает.
В моем файле Symfony/app/config/parameters.ini я указал database_driver = "pdo_sqlsrv" в качестве драйвера базы данных (поскольку я читал, что это будет обрабатываться с помощью db_lib
), но при попытке запустить команду create database (с помощью команды php app/console doctrine:database:create
) Я получаю сообщение об ошибке:
Не удалось создать базу данных для соединения с именем не удалось найти драйвер
Затем я изменил драйвер на database_driver="pdo_dblib"
, и теперь я получаю сообщение об ошибке:
[Учение\DBAL\DBALException]
Данный "драйвер" pdo_dblib неизвестен, в настоящее время Doctrine поддерживает только следующие драйверы: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv
Так что кажется, что для подключения к MSSQL мой единственный вариант - pdo_sqlsrv
, поэтому я пошел, чтобы установить это. Однако Я только что открыл здесь, что
Расширение PDO_SQLSRV совместимо только с PHP, работающим в Windows.
Таким образом, драйвер, поддерживаемый доктриной, и те, которые доступны для использования в Linux, кажутся взаимовыгодными. Из поиска я не нашел примеров того, что эта проблема была решена до сих пор (один из них отметил проблему как решение, но когда я прочитал нить, он просто переместил его dev env в окно окна... не совсем то, что у меня было в виду!).
Ответы
Ответ 1
В 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: dblib, mysql, sqlite,...
dblib
на самом деле тот, который нам нужен
Теперь, чтобы использовать этот драйвер с Doctrine, этот пост:
Doctrine 2 - Как добавить пользовательский драйвер DBAL? помог мне найти ответ.
OP предлагает использовать этот пакет на git, который заставляет вещи работать вместе.