我正在使用python尝试连接数据库。该代码有效,我的环境中的某些内容发生了更改,因此主机不存在/不可访问。这是预期的。我要解决的问题是,我似乎无法捕捉到这种情况的错误。这是我的代码:
def create_db_connection(self):
try:
message('try...')
DB_HOST = os.environ['DB_HOST']
DB_USERNAME = os.environ['DB_USERNAME']
DB_PASSWORD = os.environ['DB_PASSWORD']
message('connecting...')
db = mysql.connector.connect(
host=DB_HOST,
user=DB_USERNAME,
password=DB_PASSWORD,
auth_plugin='mysql_native_password'
)
message('connected...')
return db
except mysql.connector.Error as err:
log.info('bad stuff happened...')
log.info("Something went wrong: {}".format(err))
message('exception connecting...')
except Exception as ex:
log.info('something bad happened')
message("Exception: {}".format(ex))
message('returning false connection...')
return False
我看到了message('connecting ...')呼叫,但此后什么都没有。另外,除了消息/日志外,我什么也看不到。
我是否还需要捕获/检查其他内容才能知道数据库连接尝试失败了?
这在AWS Lambda内运行,并且一直有效,直到我更改了某些子网/等为止。关键是我想抓住它不再能够连接。
答案 0 :(得分:0)
问题很可能是您的lambda函数在数据库连接超时之前就已超时。
首先,修改lambda函数以执行60秒并进行测试。大约30秒后,您应该会发现与数据库超时的连接。
要解决此问题,请修改数据库实例上的安全组以包括为lambda配置的安全组。使用此条目打开正确的端口3306