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.xmysql 8.0php 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] 操作超时

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

Laravel 6.0 迁移 - SQLSTATE[HY000] [2002] 没有这样的文件或目录

使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]

SQLSTATE[HY000] [2002] 使用 whereHas 时 laravel 中的连接被拒绝错误