这是我最近面临的挑战,
我的客户端网站使用MSSQL数据库在Windows平台上使用Codeigniter框架开发。因此,每个文件都有一个直接的MSSQL查询来处理数据。
现在他们想要从MSSQL和Windows服务器迁移到MySQL和Linux服务器。我知道,我需要为数据库迁移做很多工作。
但是在那种情况下(我的假设),如果他们以前将PDO用作数据库层,那么我不需要在每个文件中更改查询以将MSSQL移动到MySQL。
是吗?
我对PDO的假设可能很愚蠢。但请你的建议在这种情况下会很棒。
答案 0 :(得分:1)
你的假设是错误的。 PDO不是数据库抽象层,而只是数据库的接口。它不像Doctrine那样为你创建SQL。因此,每个使用不同方言的查询都需要重写。
但是,我认为这种哀叹没有任何意义。什么已经或将要做什么重要?做了什么,你必须忍受它。答案 1 :(得分:1)
不,CodeIgniter不需要PDO。实际上,CodeIgniter 2.x中的PDO支持有一个"实验"状态。
但是,如果您的客户端使用自定义编写的SQL查询而不是CI的查询构建器方法,则没有抽象层可以帮助您进行迁移。
PDO是一种低级抽象,为不同的数据库驱动程序提供通用的函数/方法名称(即PDOStatement::fetch()
而不是每个数据库的不同函数名称);它没有处理SQL语法的差异。