Подключение к БД MySQL с помощью mysql.connector.connect завершается ошибкой без перехвата

#python #mysql

#python #mysql

Вопрос:

Я использую 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
 

Я вижу до вызова сообщения (‘connecting …’), но после этого ничего. Кроме того, я вообще не вижу никаких сообщений / журналов except.

Есть ли что-то еще, что мне нужно перехватить / проверить, чтобы узнать, что попытка подключения к БД завершилась неудачей?

Это выполняется внутри AWS Lambda и работало до тех пор, пока я не изменил некоторые подсети / etc. Главное, что я хочу, чтобы он больше не мог подключиться.

Ответ №1:

Проблема, скорее всего, в том, что время ожидания вашей лямбда-функции истекает до истечения времени ожидания подключения к базе данных.

Сначала измените лямбда-функцию на выполнение в течение 60 секунд и протестируйте. Вы должны обнаружить, что примерно через 30 секунд вы увидите тайм-аут подключения к базе данных.

Чтобы устранить эту проблему, измените группу безопасности на экземпляре базы данных, чтобы включить группу безопасности, настроенную для lambda. Используйте эту запись, чтобы открыть правильный порт 3306