10

我正在尝试使用 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)但是当尝试运行创建数据库命令时(使用命令php app/console doctrine:database:create)我我收到错误:

无法为命名连接创建数据库找不到驱动程序

然后我将驱动程序更改为database_driver="pdo_dblib",现在我收到错误:

[Doctrine\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 扩展只与在 Windows 上运行的 PHP 兼容。

因此,学说支持的驱动程序和可在 linux 上使用的驱动程序似乎是互斥的。通过搜索,到目前为止,我还没有找到任何解决此问题的实例(一个人将问题标记为已解决,但是当我阅读该线程时,他只是将他的开发环境移动到了 windows 框......不完全是我所拥有的心里!)。

4

1 回答 1

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 驱动程序:dblib、mysql、sqlite、...

dblib实际上是我们需要的

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

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

于 2012-07-11T14:29:36.393 回答