我定期(每隔20分钟)从一个小型服务器的MySQL数据库中获取数据。我的数据流已经平稳运行了两个星期,直到今天它中断了,
mysql.connector.errors.ProgrammingError: 1226 (42000): User 'HH' has exceeded the 'max_questions' resource (current value: 60)我尝试重新启动脚本,但仍然得到相同的错误。当我的脚本每次运行时,它会进行8次查询,因此每小时总共有24次查询,我是如何超过资源的?每个查询都非常简单,我请求具有特定站点ID且在特定时间戳之后的记录。下面是我用来请求数据的两个函数
import pandas as pd
import mysql.connector as mysql
from datetime import datetime, timedelta
def grabSoilAfter(self, lastTime, station_name, sensor_id):
db = mysql.connect(
host = self.host,
user = self.user,
database = self.database,
password = self.password
)
cursor = db.cursor()
cols = ['data' + str(k) for k in range(0, 7)]
cols_str = ', '.join(cols)
sql_command = "select add_utc, " + cols_str + ' from weatherdata' + \
' where station_ID = \''+station_name + \
'\' and add_utc > \'' + lastTime.strftime('%Y-%m-%d %H:%M:%S') + '\' ' + \
'order by add_utc asc'
cursor.execute(sql_command)
dat = cursor.fetchall() ## it returns a list of all databases present
dat_pd = pd.DataFrame(dat, columns = ['time_utc','4inch', '8inch', '12inch', '16inch', '20inch', '24inch', '28inch'])
cursor.close()
db.close()
return dat_pd
def grabWeatherAfter(self, lastTime, station_name, sensor_id):
db = mysql.connect(
host = self.host,
user = self.user,
database = self.database,
password = self.password
)
cursor = db.cursor()
cols = ['data' + str(k) for k in range(0, 7)]
cols_str = ', '.join(cols)
sql_command = "select add_utc, " + cols_str +' from weatherdata' + \
' where station_ID = \''+station_name + \
'\' and add_utc > \'' + lastTime.strftime('%Y-%m-%d %H:%M:%S') + '\' ' + \
'order by add_utc asc'
dat = pd.read_sql_query(sql_command, db)
db.close()对于函数grabWeatherAfter(),我使用pandas.dataframe.read_sql_query自动格式化数据。我应该怎么做才能将我的QUESTIONS降低到60以下
发布于 2020-07-14 01:40:53
假设"max_questions“是围绕"max_connections”的某种转换问题,那么您可能需要停止为每个查询初始化一个新的数据库连接,而是重用一个连接。
发布于 2020-07-14 01:48:30
您可以在phpmyadmin或mysql console上尝试此操作,但您登录的用户应具有进行这些更改的权限。
就像一个普通的查询一样运行它,与选择哪个数据库无关。重要的是,您的db用户应该对此拥有特权。
对于unlimited,您可以将max_questions设置为0,也可以将其设置为任何特定值
SET @MAX_QUESTIONS=0;
FLUSH PRIVILEGES;https://stackoverflow.com/questions/62841205
复制相似问题