SQLSTATE[HY000] [2002] 使用 whereHas 时 laravel 中的连接被拒绝错误
Posted
技术标签:
【中文标题】SQLSTATE[HY000] [2002] 使用 whereHas 时 laravel 中的连接被拒绝错误【英文标题】:SQLSTATE[HY000] [2002] Connection refused error in laravel when using whereHas 【发布时间】:2020-05-02 14:17:30 【问题描述】:在 laravel 中遇到一个奇怪的问题。一切正常正常数据库工作正常读/写操作和常规雄辩的查询。但是当我使用
$query->whereHas('some_related_model',function($q)
$q->whereIn('column_on_related_model_table',[array_values]);
)
它给出了连接被拒绝的错误,如标题所示
我正在使用laravel 6.x
、mysql 8.0
和php v7.4
我在上面写了一个通用代码。它发生在每个地方都有特别的逆向关系,比如BelongsTo
【问题讨论】:
在闭包内的$q->
之前放置一个return
我也试过了。我没有工作。
查询生成器是一个对象,通过引用,所以返回无关紧要。
@mrhn 是的,但在焦虑中,我也给了它一个简短的哈哈。
mySql 8.0
似乎有问题我已迁移到mariaDB 10.3
,一切正常。我不确定 mySql 中的哪些配置实际上导致了这个错误。一旦发现实际配置问题,我会尽快发布答案
【参考方案1】:
我最近遇到了同样的问题。原来这是因为关系模型中包含的全局范围。全局范围向关系中添加了子项计数。没有全局范围,它工作得很好。我并没有真正关注它,为什么它在全局范围内失败,因为初始查询不需要计数。
【讨论】:
以上是关于SQLSTATE[HY000] [2002] 使用 whereHas 时 laravel 中的连接被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 2 SQLSTATE [HY000] [2002] 连接被拒绝错误
SQLSTATE[HY000] [2002] 连接被拒绝 Laravel 5.8.35
Laravel 6.0 迁移 - SQLSTATE[HY000] [2002] 没有这样的文件或目录