CodeIgniter 4连接本地Oracle数据库.env配置报错求助
解决CodeIgniter 4连接Oracle数据库的.env配置问题
问题根源
报错ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA的核心原因是你的.env配置未指定Oracle的服务名(SERVICE_NAME),而OCI8驱动需要该参数才能建立连接。
正确配置方式
方式1:基础字段配置
直接将Oracle的服务名填入database字段,这是CodeIgniter 4 OCI8驱动默认的参数映射方式:
database.default.hostname = localhost database.default.database = orcl database.default.username = system database.default.password = MYPASSWORD database.default.DBDriver = oci8 database.default.DBPrefix = database.default.port = 1521
database.default.database对应你在SQL Developer中使用的service name: orcl,填入该值后,驱动会自动将其作为连接时的SERVICE_NAME传递给Oracle监听程序。
方式2:完整DBDSN配置(更直观)
如果基础配置仍有问题,可以直接定义完整的Oracle连接字符串,避免字段映射可能带来的混淆:
database.default.DBDriver = oci8 database.default.DBDSN = oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl))) database.default.username = system database.default.password = MYPASSWORD database.default.DBPrefix =
- 该配置直接复刻Oracle的TNS连接描述,明确指定服务名、主机、端口等所有参数,适合新手排查连接问题。
额外注意事项
- 确保你的PHP环境已安装并启用OCI8扩展,这是CodeIgniter 4连接Oracle的必要依赖;
- 若你使用Oracle SID而非服务名,需将配置中的
SERVICE_NAME替换为SID(例如(CONNECT_DATA=(SID=orcl))); - 修改.env后,重启CodeIgniter开发服务器,确保新配置生效。
内容的提问来源于stack exchange,提问作者Dusan
相关产品推荐
相关产品推荐

