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

Laravel Dusk环境文件合并问题:MySQL与SQLite测试配置失效

解决Laravel Dusk测试时无法切换到SQLite数据库的问题

我之前也踩过这个坑!你已经做了切换数据库连接的第一步配置,但还差几个关键步骤才能让SQLite在Dusk测试中正常工作,下面一步步来解决:

  • 完善.env.dusk.local的SQLite配置
    光设置DB_CONNECTION=sqlite还不够,SQLite不需要host、port、username和password这些参数,而且得明确指定数据库文件路径。修改你的.env.dusk.local:

    DB_CONNECTION=sqlite
    # 注释或删除MySQL相关配置项
    # DB_HOST=127.0.0.1
    # DB_PORT=3306
    # DB_DATABASE=homestead
    # DB_USERNAME=homestead
    # DB_PASSWORD=secret
    # 显式指定SQLite数据库文件路径
    DB_DATABASE=database/dusk.sqlite
    
  • 确保SQLite数据库文件存在
    你可以手动在database目录下创建空的dusk.sqlite文件,或者用终端命令快速生成:

    # Linux/Mac
    touch database/dusk.sqlite
    # Windows(PowerShell)
    New-Item -Path database/dusk.sqlite -ItemType File
    
  • 验证config/database.php中的SQLite配置
    打开config/database.php,确保sqlite驱动的配置正确读取环境变量:

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],
    

    这里的核心是database字段通过env('DB_DATABASE')读取你在.env.dusk.local中设置的路径。

  • 清除配置缓存(重要!)
    如果之前运行过php artisan config:cache,Laravel会缓存配置文件,导致Dusk无法读取新的.env.dusk.local配置。执行命令清除缓存:

    php artisan config:clear
    
  • 用Dusk专属迁移命令初始化数据库
    别用普通的migrate命令,改用Dusk的迁移命令,确保使用测试环境的SQLite数据库:

    php artisan dusk:migrate
    

    如果需要每次测试前重置数据库,可以在测试类中引入RefreshDatabase trait,或者运行php artisan dusk:migrate:fresh。

做完这些步骤后,再运行Dusk测试,应该就能正常使用SQLite数据库了!

内容的提问来源于stack exchange,提问作者Barnabas Kecskes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:48:00