Doctrine的DATABASE_URL中driver的可用值及相关疑问
问题解答
1. mysql 是否是 pdo_mysql 的别名?
是的。Symfony的DoctrineBundle对驱动名做了简化映射,当你在DATABASE_URL里写mysql时,底层会自动映射为Doctrine DBAL的pdo_mysql驱动,这就是为什么测试时实际使用PDO但配置里写的是mysql。这种简写是为了让配置更简洁,符合日常使用习惯。
2. DATABASE_URL 中的driver值是否存在转换?
存在转换。Doctrine在解析数据库URL时,会自动将驱动名中的连字符(-)转换为下划线(_),所以参考页里的pdo-mysql和配置中用的pdo_mysql完全等效。URL格式里用连字符是因为它更符合URL的字符规范,而Doctrine配置数组里习惯用下划线做分隔符,这种转换是框架与库之间的适配处理。
3. DATABASE_URL 中driver的所有可能取值有哪些?
常用的驱动取值(含简写别名和标准名)如下:
- MySQL相关:
mysql(别名,对应pdo_mysql)、pdo-mysql、mysqli(非PDO驱动) - PostgreSQL相关:
pgsql(别名,对应pdo_pgsql)、pdo-pgsql - SQLite相关:
sqlite(别名,对应pdo_sqlite)、pdo-sqlite - Oracle相关:
oci8、pdo-oracle - SQL Server相关:
sqlsrv(别名,对应pdo_sqlsrv)、pdo-sqlsrv - 其他:如
ibm_db2、pdo-ibm(DB2)、pdo-odbc(ODBC)等,具体取决于你安装的Doctrine DBAL驱动扩展。
注:Symfony大部分场景推荐使用PDO类驱动(即前缀带pdo-或对应别名),非PDO驱动需要额外扩展支持,使用场景较少。
内容的提问来源于stack exchange,提问作者Manolo
相关产品推荐
相关产品推荐

