我正在尝试使用 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
)我收到错误:
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 上使用的驱动程序似乎是相互排斥的。通过搜索,到目前为止我还没有发现任何解决这个问题的实例(一个人将问题标记为已解决,但是当我阅读该线程时,他只是将他的开发环境移动到 Windows 框......不完全是我所拥有的记在心里!)。
最佳答案
在 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这使得事情一起工作。
关于php - 在 Linux 上为 SYMFONY 2 将 Doctrine 2 连接到 MSSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081993/