You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:00:55