【问题标题】:Laravel PHPUnit- SQLite in-memory database for multiple connectionsLaravel PHPUnit- 用于多个连接的 SQLite 内存数据库
【发布时间】:2018-11-15 10:16:33
【问题描述】:

我的应用程序必须使用两个数据库连接,称为 mysql1 和 mysql2。 User 模型在第一个连接上,Department 模型在第二个连接上。

两者之间存在关系,一个部门属于多个用户。该关系使用存储在 mysql2 数据库中的 department_user 数据透视表。

这很好用,除了在测试方面。我正在使用 PHPUnit 并将 DB_DRIVER 设置为 sqlite 并将 DB_DATABASE 设置为 :memory: 以便测试运行得更快并且不会碰到实际的 MySQL 数据库。

如何使内存数据库与多个连接一起工作?有没有办法给他们每个人一个唯一的名字?

phpunit返回的错误是table not found,表示无法连接第二个数据库。

【问题讨论】:

标签: laravel sqlite eloquent phpunit


【解决方案1】:

我遇到了一些类似的问题。这可能是可能的,但我最终放弃了使用:memory:,转而为我的 SQLite 数据库使用本地文件。然后我就有机会按照你的建议给他们起独特的名字。

此外,为了让每个数据库了解另一个数据库以便您的数据透视表,您将不得不让您的测试在将要发起查询的那个上执行ATTACH DATABASE '$database' AS $name。并确保您没有在事务中执行该语句,否则它将不起作用。

在这里查看我的答案:belongsToMany relationship in Laravel across multiple databases。 我认为这与您正在寻找的内容相符。

【讨论】:

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