1694 (HY000): невозможно изменить @@ session.sql_log_bin внутри транзакции - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь вызвать mysql.rds_set_configuration хранимую процедуру RDS из клиента Python, однако я получаю сообщение об ошибке ERROR

import mysql.connector
from mysql.connector import Error

connection = mysql.connector.connect(
                 user = app_conf.rds_user,
                 password = app_conf.rds_password,
                 host = master_db
                 )
     cursor = connection.cursor()
     cursor.callproc**('mysql.rds_set_configuration', ['binlog retention hours', 12 ])**
          for result in cursor.stored_results():
            print(result.fetchall())
        except mysql.connector.Error as error:
          print("Failed to execute stored procedure: {}".format(error))
        finally:
          if (connection.is_connected()):
            cursor.close()
            connection.close()
            print("MySQL connection is closed")

, она завершается с

Failed to execute stored procedure: 1694 (HY000): Cannot modify @@session.sql_log_bin inside a transaction
MySQL connection is closed

Если явойдите в RDS и выполните эту хранимую процедуру, проблем нет.

Я также пытался использовать библиотеку python pymysql, однако та же проблема.

mysql версия

mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+-----------------------+
| Variable_name           | Value                 |
+-------------------------+-----------------------+
| innodb_version          | 5.7.26                |
| protocol_version        | 10                    |
| slave_type_conversions  |                       |
| tls_version             | TLSv1,TLSv1.1,TLSv1.2 |
| version                 | 5.7.26-log            |
| version_comment         | Source distribution   |
| version_compile_machine | x86_64                |
| version_compile_os      | Linux                 |
+-------------------------+-----------------------+
8 rows in set (0.06 sec)

Пожалуйста, предложите !!!

1 Ответ

0 голосов
/ 05 ноября 2019
connection = mysql.connector.connect(
             user = app_conf.rds_user,
             database='mysql',
             password = app_conf.rds_password,
             host = master_db,
             autocommit = True

Установка true для автоматической фиксации поможет мне решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...