我们有一个 CakePHP 1.3 应用程序,我们正在升级到 2.2.3。我们的应用程序的要求之一是能够查询到单独应用程序的 MSSQL 数据库以进行一些身份验证并提取用户数据。
在浪费了两天的时间研究和骚扰我们的虚拟主机以安装 PHP / PDO / MSSQL 库(我们已经有用于 MySQL、sqlite 和 sqlite 2 的 PDO)之后,它看起来非常严峻。
TL;DR:我们需要找到一种在 Linux 下进行 PDO MSSQL 查询的方法。
开始咆哮:
让我发疯的事情是:CakePHP 开发人员破坏了 MSSQL 兼容性,以便使用 PDO 制作他们所有的 DB 包装器。如果您在 Linux 服务器上有一个 1.3 的应用程序,该应用程序正在愉快地连接到 MSSQL 数据库并想要将其升级到 2.2,那么您将无法再连接到该数据库,因为显然使用 PDO 比确保您不使用 PDO 更重要破坏用户的现有功能。
CakePHP 2.x 文档不会警告用户这个陷阱,他们只是说你需要 PDO。
应该注意 PDO/MSSQL 不能在 Linux 下工作,或者应该有替代 CakePHP 提供的 Sqlserver.php 数据源,这样升级他们的应用程序的人就有机会在 2.2x 下让他们的应用程序再次运行
我现在真的很生气,因为我浪费了一周的时间将东西从 1.3 移植到 2.2,现在看起来我要么必须手动编写查询并忽略 CakePHP 的出色数据库抽象,要么我需要转换我所有的工作回到 1.3 并放弃最新版本 CakePHP 中的所有新改进。