【问题标题】:Laravel 6 Testing - Unknown database ':memory:'Laravel 6 测试 - 未知数据库':内存:'
【发布时间】:2021-02-09 19:20:22
【问题描述】:

由于某种原因,我的应用程序在测试打印错误时无法使用 :memory: 作为数据库:SQLSTATE[HY000] [1049] Unknown database ':memory:'

如何让我的测试使用内存中的数据库?我查看了 Stack Overflow、LaraCast 和 Reddit,但没有找到解决方案。有没有其他方法可以做到这一点?

PhpUnit.xml

<php>
    <server name="APP_ENV" value="testing"/>
    <server name="BCRYPT_ROUNDS" value="4"/>
    <server name="CACHE_DRIVER" value="array"/>
    <server name="DB_CONNECTION" value="sqlite"/>
    <server name="DB_DATABASE" value=":memory:"/>
    <server name="MAIL_DRIVER" value="array"/>
    <server name="QUEUE_CONNECTION" value="sync"/>
    <server name="SESSION_DRIVER" value="array"/>
    <server name="TELESCOPE_ENABLED" value="false"/>
</php>

config/database.php

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

我已经运行了php artisan config:clearcache:clear

【问题讨论】:

  • 你的测试是如何运行的?
  • @KennyHorna 通过 CLI 使用 vendor/bin/phpunit --filter="myTestCase"
  • 您是否尝试指定配置文件? vendor/bin/phpunit --filter="myTestCase" --configuration phpunit.xml
  • 是的,同样的错误发生
  • 查看this thread,也许对你有帮助

标签: laravel sqlite phpunit


【解决方案1】:

所以最终决定删除 &lt;server name="DB_DATABASE" value=":memory:"/&gt; 哪种工作但仍然给出杂项错误,但这让我意识到我的 phpunit.xml 没有覆盖我的数据库连接。

所以总而言之,我最终创建了一个测试连接,该连接使用了有效的 :memory: 数据库。

'testing' => [
    'driver' => 'sqlite',
    'database' => ':memory:',
],

至于最初阻止它以标准方式工作的原因,我仍然不知道。但这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 2016-01-09
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多