在Linux上将Doctrine 2连接到MSSQL for SYMFONY 2

Rob*_*nly 10 php linux sql-server symfony doctrine-orm

我试图使用Doctrine 2(用于Symfony 2)从Linux机器连接到MSSQLServer.

我已经安装了pdo_dblib(FreeTDS/Sybase DB-lib的PDO驱动程序),并且能够通过命令行上的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",我现在收到错误:

[Doctrine\DBAL\DBALException]
给定的'driver'pdo_dblib未知,Doctrine目前仅支持以下驱动程序:pdo_mysql,pdo_sqlite,pdo_pgsql,pdo_oci,oci8,ibm_db2,pdo_ibm,pdo_sqlsrv

所以似乎连接到MSSQL我唯一的选择是pdo_sqlsrv,所以我去安装它.但是,我刚刚在这里发现了那个

PDO_SQLSRV扩展仅与在Windows上运行的PHP兼容.

因此,由学说支持的驱动程序和可在linux上使用的驱动程序似乎是相互支持的.从搜索到目前为止我还没有找到任何解决这个问题的例子(一个人认为这个问题已经解决了,但是当我读到这个帖子时,他只是简单地将他的开发环境移到了一个窗口框中......不完全是我拥有的心里!).

Pie*_*NAY 8

在linux(至少基于Debian的发行版)下,php需要php5-sybase支持Sybase和MSSql 的软件包.

如果您使用的是基于debian的发行版,则需要执行此操作

$ sudo apt-get install php5-sybase
$ sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

php -r "phpinfo();" | grep "PDO drivers"
Run Code Online (Sandbox Code Playgroud)

应该给你

PDO驱动程序:dblib,mysql,sqlite,...

dblib 实际上是我们需要的

现在能够将此驱动程序与Doctrine一起使用,这篇文章: Doctrine 2 - 如何添加自定义DBAL驱动程序?帮我找到了答案.

OP建议在git上使用这个,使事情协同工作.