通过 php Spark migrate -all 运行迁移时,CodeIgniter 4 plus Myth/Auth 抛出错误

标签 codeigniter codeigniter-4

我发现了一些有线行为,几周以来我一直在致力于一个 CI4 项目。一切都工作正常,但到目前为止我只是在本地计算机上处​​理该项目。当我想在我的笔记本电脑上运行该项目时,当我尝试使用 php Spark migrate -all 运行迁移时遇到错误

CodeIgniter CLI Tool - Version 4.0.4 - Server-Time: 2020-07-20 06:16:02am



Running all new migrations...

An uncaught Exception was encountered



Type:        CodeIgniter\Database\Exceptions\DatabaseException

Message:     Unable to connect to the database.

Filename:    /opt/lampp/htdocs/sms/vendor/codeigniter4/framework/system/Database/BaseConnection.php

Line Number: 425

该项目包括 Myth/auth,所以我尝试使用 php Spark migrate 运行“我的”迁移。一切正常,没有任何问题,表格就在那里,没有错误。只是为了好玩,我将数学/身份验证迁移从供应商文件夹移动到“普通”数据库/迁移文件夹,并且能够以这种方式迁移它们。

这是非常有线的,特别是因为在我之前使用的电脑上一切都工作得很好。当设置新的 MySQL/MariahDB 数据库时,我可以使用 php Spark migrate -all 运行迁移,没有任何错误。但不知何故只在那里。

我能够在笔记本电脑上的 Manjaro 分区、Windows 10 分区和 iMac 上重现该错误。 因此,如果您想重现该错误,请执行以下操作:

  1. Composer 创建项目 codeigniter4/appstarter 等等

  2. env 重命名为 .env

  3. 设置CI_ENVIRONMENT =development并明显取消注释该行

  4. 在 .env 中配置并取消注释您的数据库设置

  5. 使用 > php Spark migrate:create AddBlog 创建一个示例迁移,就像文档中的迁移一样

  6. 将以下内容添加到新迁移并保存文件:

    伪造->addField([ 'blog_id' => [ '类型' => 'INT', '约束' => 5, '无符号' => true, '自动增量' => 真, ], '博客标题' => [ '类型' => 'VARCHAR', '约束' => '100', ], '博客描述' => [ '类型' => '文本', '空' => 真, ], ]); $this->forge->addKey('blog_id', true); $this->forge->createTable('blog'); } 公共(public)函数 down() { $this->forge->dropTable('博客'); } }
  7. 运行> Composer 需要神话/身份验证

  8. 编辑 app/Config/Email.php 并验证 fromName 和 fromEmail 是否设置为发送电子邮件进行密码重置等时使用的值。

  9. 编辑app/Config/Validation.php并将以下值添加到ruleSets数组中:\Myth\Auth\Authentication\Passwords\ValidationRules::class

  10. 确保您的数据库设置正确,然后运行身份验证迁移:php Spark migrate -all

  11. 因此你也会出现上述错误。我没能 解决该错误,除了正在使用的系统 首先。

  12. 如果您只使用php Spark migrate,它将迁移示例迁移而不会出现任何错误

最佳答案

我在 Kubuntu 18.04 LTS 上运行 CI 4.04,运行 apache2.4.29 和 PHP 7.4.9

简短的答案是......

使用php spark migrate -all在它知道的所有地方搜索数据库/迁移文件夹和文件。

下面正好有一个这样的文件夹/文件

tests/_support/Database/Migrations/2020-02-22-222222_example_migration.php

添加的位以使简短答案更长

因此,我们看到的数据库错误是由于没有在 /app/Config/Database.php 中为 $tests 设置数据库凭据

它所做的只是寻求连接到 $tests 下设置的数据库,但似乎并未实际运行,因为我们不希望它运行。 当环境设置为“测试”时,这似乎已启用。

暂时有 3 个选择...

  1. 忽略该错误。 但这总是让您想知道到底发生了什么。

  2. 设置 $tests 数据库的凭据。 (没有真正保证。)

  3. 如果不使用测试文件夹,请删除/重命名它。 (阻止它找到它。)

  4. 将使用 -n 开关/选项并指定要使用的命名空间(但不确定这是否有效。)

关于通过 php Spark migrate -all 运行迁移时,CodeIgniter 4 plus Myth/Auth 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63557326/

相关文章:

codeigniter-4 - Codeigniter 4 模型关系实体

php - 使用 findAll() 时 codeigniter 中的 mysqli_sql_exception 未知列

php - 尝试在 Codeigniter 4 中启动分页时返回错误

php - CodeIgniter 基类,这是为什么呢?

php - 如何在 codeigniter 中查询 JSON 数据类型?

php - PDO/Codeigniter 准备时出错

php - 如何在 codeigniter 4 中加载 css 或 js 文件?

codeigniter - 在 CodeIgniter 4.0.2 中设置动态基本 URL

codeigniter - 加拿大邮政从加拿大到美国的运输方式

codeigniter - Paypal 沙盒测试买家帐户无法正常工作