Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connecting Doctrine 2 to MSSQL For SYMFONY 2 On Linux

I am trying to use Doctrine 2 (for Symfony 2) to connect to MSSQLServer from a linux machine.

I have installed pdo_dblib (PDO Driver for FreeTDS/Sybase DB-lib) and am able to connect to the db server via tsql on the command line and from the php cli also. Thus I know this is working.

In my Symfony/app/config/parameters.ini file I had specified database_driver="pdo_sqlsrv" as the database driver (as I read that this would be handled by db_lib) but when trying to run a create database command (using the command php app/console doctrine:database:create) I am getting the error:

Could not create database for connection named could not find driver

I then changed the driver to database_driver="pdo_dblib" and I am now getting the error:

[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

So it seems that to connect to MSSQL my only option is pdo_sqlsrv, so I went to install this. However, I have just discovered here, that

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

Thus the driver supported by doctrine and those available to use on linux seem to be mutually exlusive. From searching I haven't found any instances of this issue being solved thus far (One guy marked the issue as solved, but when I read the thread he had simply moved his dev env to a windows box... not exactly what I had in mind!).

like image 370
Rob Ganly Avatar asked Jun 18 '12 11:06

Rob Ganly


1 Answers

Under linux (at least Debian based distros), php needs the package php5-sybase that brings support for Sybase and MSSql.

If you are using a debian based distribution you will want to do

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

And

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

should give you

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

dblib is actually the one we need

Now to be able to use this driver with Doctrine, this post: Doctrine 2 - How to add custom DBAL driver? helped me to find the answer.

The OP suggests to use this bundle on git that makes things work together.

like image 147
Pierre de LESPINAY Avatar answered Oct 22 '22 11:10

Pierre de LESPINAY