SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

Posted

技术标签:

【中文标题】SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,【英文标题】:SQLSTATE[HY000] [2002] A connection attempt failed because the connected party did not properly respond after a period of time, 【发布时间】:2019-06-22 10:21:05 【问题描述】:

我尝试在我的 Laravel 5.6 项目中连接 2 个数据库,但出现这样的错误

或者连接失败,因为连接的主机没有响应。 (SQL:从mt_merchant中选择*)

我尝试了以下代码:

.env

第一个数据库连接(这是在我的本地服务器中)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=thedaldb
DB_USERNAME=root
DB_PASSWORD=

第二个数据库连接(在实时服务器 IP 18.188.209.59 中)

DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND= 18.188.209.59
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=delivery_test_copied
DB_USERNAME_SECOND=testuser
DB_PASSWORD_SECOND=testuser@123

app/config/database.php

'connections' => [
    'onlineorder' => [
            'driver'    => env('DB_CONNECTION_SECOND'),
            'host'      => env('DB_HOST_SECOND'),
            'port'      => env('DB_PORT_SECOND'),
            'database'  => env('DB_DATABASE_SECOND'),
            'username'  => env('DB_USERNAME_SECOND'),
            'password'  => env('DB_PASSWORD_SECOND'),
        ],
]

app/Models/OnlineOrder/OnlineOrder.php

<?php
namespace App\Models\OnlineOrder;
use Illuminate\Database\Eloquent\Model;

class OnlineOrder extends Model

    protected $connection = 'onlineorder';


app/Http/Controllers/Onlineorder/AppOnlineOrderController.php

<?php

namespace App\Http\Controllers\Onlineorder;

use Symfony\Component\HttpKernel\Exception\HttpException;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use App\Models\OnlineOrder\OnlineOrder;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Validator;
use Config;
use File;
use DB;


class AppOnlineOrderController extends Controller

    public function test($merchant_id)
    
        $db_ext = DB::connection('onlineorder');
        $merchant = $db_ext->table('mt_merchant')->get(); //mt_merchant is table name
        print_r($db_ext);exit;
    

我只是想在我的本地服务器项目中连接实时服务器数据库

【问题讨论】:

实时数据库是否对远程请求开放? @MagnusEriksson:是的 @MagnusEriksson:我认为DB_PORT_SECOND 是问题所在。我也尝试连接local sever,但同样的错误。 3306 是 MySQL 的标准端口。如果这是问题所在,那么服务器没有使用标准端口,您需要找出要使用的端口。您还应该尝试从 MySQL Workbench(或任何其他数据库管理应用程序)之类的东西连接到远程数据库,看看您是否可以通过这种方式连接到它。 您应该在此处填写您的实际凭据。你试过我问的吗?尝试从其他应用程序连接到数据库,以确保它实际上正在接受远程连接?从那个开始......如果这不起作用,那么这是一个配置问题而不是代码问题。 【参考方案1】:

在您的 RDS 实例页面的“连接性和安全性”中,检查配置是否在“是”选项上有“公共可访问性”。也许您没有与您的实例关联的公共 IP。

https://aws.amazon.com/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/

【讨论】:

【参考方案2】:

IP 地址总是随时间变化...而不是使用定向 IP 使用主域 喜欢:

DB_HOST_SECOND=mydomain.com.sd

我觉得这样就可以了

【讨论】:

以上是关于SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 SQLSTATE [HY000] [2002] 连接被拒绝错误

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

PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]

gcloud app SQLSTATE[HY000] [2002] 连接超时

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

SQLSTATE [HY000] [2002] 连接被拒绝 - 原因:PDOException [重复]