OperationalError:“未知的MySQL服务器主机”

时间:2019-10-10 13:09:07

标签: python mysql mysql-python

我正试图在 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中连接时出现错误。

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

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方法。我发现的问题与网络速度/带宽有关。

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",
    }
}