php - 在 Linux 上为 SYMFONY 2 将 Doctrine 2 连接到 MSSQL

标签 php sql-server linux 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 处理)但是当我尝试运行创建数据库命令(使用命令 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/

相关文章:

php - 从双重缩短的 URL 获取最终 URL (t.co -> bit.ly -> final)

sql - 删除 SQL Server 数据库中属于不同架构的所有对象?

使用 TYPE=InnoDB 导入 MySQL

linux - nmap中的空ip地址是什么意思?

PHP - 在类的所有函数中访问全局变量

php - 日期显示不正确

javascript - 如何将图像链接从 Laravel 存储发送到前端( Angular )。除图像外的所有作品属性

c# - 来自 IIS7 的 MSSQL 连接

c# - 为存储过程调用实现线程池

c++ - 如何检查文件是否仍在写入?