OperationalError: "Unknown MySQL server host"

OperationalError: "Unknown MySQL server host"

我正在尝试借助 MySQldb 连接到 AWS 数据库。

当我将其与配置连接时:

DATABASES = {
    "default": {
        "host": "xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com",
        "port": 3306,
        "user": "<name>",
        "passwd": "********",
        "db": "<db_name>",
        "charset": "utf8",
    }
}

使用 MySQLdb:


def get_mysql_connection(dbname="default"):
    """ 
    Returns a connection to database specified in settings 
    by the given dbname.
    """
    config = settings.DATABASES[dbname]
    return MySQLdb.connect(**config)

我收到这个错误:

in get_mysql_connection
    return MySQLdb.connect(**config)
  File "/usr/local/lib/python3.7/site-packages/MySQLdb/__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/MySQLdb/connections.py", line 164, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2005, "Unknown MySQL server host 'xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com' (-3)")

我可以使用 MySQL Workbench 在同一网络上使用相同的凭据连接到数据库,但在 Python.

中连接时出现错误

我应该在哪里进行更改才能使其正常工作?

我终于找到了解决方法。我发现的问题与网络 speed/bandwidth.

有关

MySQL Workbench 连接时,它没有任何超时或查询超时非常高,因此它连接并显示可以执行表和数据库查询。

但在Python中,它与主机的连接超时时间很短。因此,我通过添加参数 connect_timeout.

增加了 config 中的超时时间

现在,配置如下所示:

DATABASES = {
    "default": {
        "host": "xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com",
        "port": 3306,
        "user": "<name>",
        "passwd": "********",
        "db": "<db_name>",
        "connect_timeout": 180,
        "charset": "utf8",
    }
}