首页 > 解决方案 > CodeIgniter 4 - .env 文件的多个数据库问题

问题描述

我正在使用 CodeIgniter 4.0.3。我已经composer通过以下方式安装了它:

composer create-project codeigniter4/framework

在作曲家项目创建完成后出现一个错误(Script bash admin/setup.sh handling the post-update-cmd event returned with error code 127--- 在 Windows 10 上运行),但通过编辑composer.json和删除bash admin/setup.sh指令迅速解决了它

我已经成功地跟进了本教程,之后,我决定进行一些更改以使其更类似于我的 Web 应用程序要求,例如添加多个数据库。

从文档(此处此处)开始,我读到我必须修改我的.env文件。所以,这是原来的

# ORIGINAL .env
database.default.hostname = localhost
database.default.database = ci4
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi

我想做类似的事情:

# MODIFIED .env
database.primary.hostname = localhost
database.primary.database = ci4primary
database.primary.username = root
database.primary.password =
database.primary.DBDriver = MySQLi

database.secondary.hostname = localhost
database.secondary.database = ci4secondary
database.secondary.username = root
database.secondary.password =
database.secondary.DBDriver = MySQLi

接下来,在我的模型中,我通过以下方式调用数据库进行连接:

use Config\Database;

...

$dbPrimary   = Database::connect('primary');
$dbSecondary = Database::connect('secondary');

当我运行该应用程序时,我收到以下错误:

InvalidArgumentException primary is not a valid database connection group

我不知道还能做什么,我尝试了.env文件的各种编辑,尝试调试Config类(我认为它不加载primary也不加载secondary子键 --- 我也不知道如何将类更改为从我的环境文件中读取它们)。

快速清单:

标签: phpmysqldatabasecodeigniter

解决方案


文件中的数据库连接组.env也必须存在于app/Config/Database.php文件中。默认情况下,仅定义defaulttests连接组。


推荐阅读