我试图从mysql.rds_set_configuration客户端调用python RDS存储过程,但最终出现了错误。
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)敬请推荐!
发布于 2019-11-05 20:32:31
connection = mysql.connector.connect(
user = app_conf.rds_user,
database='mysql',
password = app_conf.rds_password,
host = master_db,
autocommit = True将自动提交设置为true可帮助我解决此问题
https://stackoverflow.com/questions/58689139
复制相似问题