codeigniter中更换数据库需修改application/config/database.php中的default配置,或定义多组连接并动态加载,亦可按environment环境变量自动加载对应子目录下的database.php配置。

你需要在CodeIgniter项目中更换数据库服务器地址、用户名或密码,比如从本地测试环境迁移到线上服务器,或者为不同用户切换独立数据库实例。
修改默认数据库连接配置
打开 application/config/database.php 文件,找到以 $db['default'] = array( 开头的配置块。
修改其中的 'hostname'、'username'、'password' 和 'database' 四个键值对,填入新数据库的实际参数。
【必须确保 'dbdriver' 与实际数据库类型严格匹配】:MySQL用 'mysqli',PostgreSQL用 'postgre',SQLite用 'sqlite3',写错会导致整个应用无法启动且不报明确错误。
保存文件后,无需重启Web服务,下次请求时自动生效。
动态切换数据库连接组
当需要在运行时根据条件(如租户ID、请求域名)连接不同数据库时,不能只改 default 组——得预先定义多个连接组。
在 application/config/database.php 中,复制一份 $db['default'] 配置,改为 $db['tenant_a'] 或 $db['backup_db'] 等有意义的键名,并填入对应数据库参数。
在控制器或模型中调用:$this->load->database('tenant_a', TRUE),第二个参数 TRUE 表示返回新数据库对象而非覆盖 $this->db。
这一步操作起来很简单,直接把连接组名传进去就行,但注意:如果该组未在 database.php 中定义,会触发致命错误且无回退机制。
按环境自动加载不同配置
开发、测试、生产环境使用不同数据库是常见需求,CodeIgniter 支持通过环境变量自动加载对应配置。
第一步:确认 index.php 中已设置 define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');,并确保 Web 服务器设置了 CI_ENV=production 环境变量。
第二步:在 application/config/ 目录下创建子目录 development/、production/,将 database.php 复制进去并分别修改。
第三步:删除根目录下的 database.php,让框架自动按 ENVIRONMENT 值选择对应子目录中的配置文件。
这个方案能彻底隔离环境配置,避免人为误改线上库密码。但要注意:如果子目录中缺少 database.php,框架不会降级读取根目录文件,而是直接报错。











