laravel 测试出错:SQLSTATE[HY000]:一般错误:1 没有这样的表:用户

Posted

技术标签:

【中文标题】laravel 测试出错:SQLSTATE[HY000]:一般错误:1 没有这样的表:用户【英文标题】:Error in laravel testing : SQLSTATE[HY000]: General error: 1 no such table: users 【发布时间】:2021-09-19 14:17:04 【问题描述】:

当我在 laravel 中使用 phpUnit 并在运行 PHPUnit 后将工厂添加到我自己的测试类时,控制台中会出现此错误:

 SQLSTATE[HY000]: General error: 1 no such table: users 

我的测试类方法:

public function testExistSomeTextsInIndexPage()

    $users= factory(User::class)->create();
    $this->get('/')->assertSee($users->name);
     

这个工厂代码在我项目的其他部分正常工作,只是在测试类中显示错误

【问题讨论】:

您在测试设置中迁移了吗? 测试的设置到底在哪里?我只是迁移主数据库项目 在根文件夹,你有phpunit的配置文件,设置它使用与项目相同的数据库。通常,对于测试,您使用临时数据库,因此您可以测试所有内容(创建、修改和删除)。 【参考方案1】:

您应该包含Illuminate\Foundation\Testing\DatabaseMigrations 作为特征。关于这个有documentation。

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;

class ExampleTest extends TestCase

    use DatabaseMigrations;

注意:设置正确的数据库凭据。如果您使用现有数据库的凭据,它将覆盖数据库。我建议您使用带有 SQLite 的 in-memory DB,参见示例 here

【讨论】:

以上是关于laravel 测试出错:SQLSTATE[HY000]:一般错误:1 没有这样的表:用户的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:SQLSTATE [HY000] [2002] 连接被拒绝

在 laravel 控制台中执行 php artisan migrate 时出错

SQLSTATE[HY000] [1049] 未知数据库 'laravel'

SQLSTATE [23502]:非空违规:7 错误 - laravel

Laravel:SQLSTATE [28000] [1045] 用户 'homestead'@'localhost' 的访问被拒绝

SQLSTATE [23000]:完整性约束违规:1048 laravel 5.7