将代码移至 Debian 导致 "Use multi=True when executing multiple statements" 个错误语句
Moving Code to Debian Caused "Use multi=True when executing multiple statements" Error Statements
我已经 运行 python 脚本在装有 Ubuntu 20.04 LTS 的机器上调用 MySQL。我最近将这些脚本移到了服务器 运行 Debian 10.
两台服务器都安装了 MySQL 8.0.21。 Python 3.7.3 在 Debian 服务器上,Python 3.8.2 在 Ubuntu 上。当我在 Debian 服务器上执行 python 脚本时,我收到以下错误消息:
Use multi=True when executing multiple statements
我没有对代码进行任何更改,所以我不确定为什么我会在 Debian 服务器上收到此消息,而不是 Ubuntu。
这是导致错误的脚本部分:
cursor = dbconn.cursor(dictionary=True)
# get next scheduled event to be aired
sql = "CALL GetEvent();"
cursor.execute(sql)
result = cursor.fetchone()
cursor.close()
if result:
eventtime = str(result["eventtime"])
# the max seconds we are going to wait is 60
init_waitseconds = timediffinseconds(eventtime)
if init_waitseconds > 61:
waitseconds = 60
else:
waitseconds = init_waitseconds
# wait for specified time
print_stdout(f"{bcolors.CGREEN}[EVENT_MONITOR]{bcolors.ENDC} Waiting for next scheduled event at {eventtime}")
time.sleep(waitseconds)
调用的存储过程如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEvent`()
BEGIN
DECLARE v_DayName CHAR(9);
SET v_DayName := DAYNAME(CURRENT_DATE);
SELECT e.name, e.eventaction, e.data, e.extra, et.eventday, et.eventtime, et.recurring
FROM event e
INNER JOIN eventtime et ON et.eventID = e.ID
WHERE et.eventdate = CURDATE() AND et.recurring = 'No' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
et.eventday = 'v_DayName' AND et.recurring = 'Yes' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
et.eventday = 'Day' AND et.recurring = 'Yes' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
CASE WHEN IsWeekday('v_DayName') = True THEN et.eventday = 'Mon-Fri' END AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
CASE WHEN IsWeekend('v_DayName') = True THEN et.eventday = 'Sat-Sun' END AND e.enabled = 1 AND et.eventtime > CURRENT_TIME()
ORDER BY et.eventtime
LIMIT 1;
END
此外,我的 python 脚本的这一部分会导致同样的错误:
cursor = dbconn.cursor(dictionary=True)
# CheckQueueCount MySQL procedure retrieves how many tracks are currently in queuelist table
sql = "CALL CheckQueueCount"
cursor.execute(sql)
result = cursor.fetchone()
ret = result["QueueCount"]
cursor.close()
return ret
及其调用的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `CheckQueueCount`()
BEGIN
SELECT COUNT(ID) AS QueueCount FROM queuelist;
END
好的,我相信我已经解决了这个问题。我卸载了使用命令安装的连接器:
sudo pip3 install mysql-connector
而是安装了它:
sudo pip3 install mysql-connector-python
错误已消失。
我已经 运行 python 脚本在装有 Ubuntu 20.04 LTS 的机器上调用 MySQL。我最近将这些脚本移到了服务器 运行 Debian 10.
两台服务器都安装了 MySQL 8.0.21。 Python 3.7.3 在 Debian 服务器上,Python 3.8.2 在 Ubuntu 上。当我在 Debian 服务器上执行 python 脚本时,我收到以下错误消息:
Use multi=True when executing multiple statements
我没有对代码进行任何更改,所以我不确定为什么我会在 Debian 服务器上收到此消息,而不是 Ubuntu。
这是导致错误的脚本部分:
cursor = dbconn.cursor(dictionary=True)
# get next scheduled event to be aired
sql = "CALL GetEvent();"
cursor.execute(sql)
result = cursor.fetchone()
cursor.close()
if result:
eventtime = str(result["eventtime"])
# the max seconds we are going to wait is 60
init_waitseconds = timediffinseconds(eventtime)
if init_waitseconds > 61:
waitseconds = 60
else:
waitseconds = init_waitseconds
# wait for specified time
print_stdout(f"{bcolors.CGREEN}[EVENT_MONITOR]{bcolors.ENDC} Waiting for next scheduled event at {eventtime}")
time.sleep(waitseconds)
调用的存储过程如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEvent`()
BEGIN
DECLARE v_DayName CHAR(9);
SET v_DayName := DAYNAME(CURRENT_DATE);
SELECT e.name, e.eventaction, e.data, e.extra, et.eventday, et.eventtime, et.recurring
FROM event e
INNER JOIN eventtime et ON et.eventID = e.ID
WHERE et.eventdate = CURDATE() AND et.recurring = 'No' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
et.eventday = 'v_DayName' AND et.recurring = 'Yes' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
et.eventday = 'Day' AND et.recurring = 'Yes' AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
CASE WHEN IsWeekday('v_DayName') = True THEN et.eventday = 'Mon-Fri' END AND e.enabled = 1 AND et.eventtime > CURRENT_TIME() OR
CASE WHEN IsWeekend('v_DayName') = True THEN et.eventday = 'Sat-Sun' END AND e.enabled = 1 AND et.eventtime > CURRENT_TIME()
ORDER BY et.eventtime
LIMIT 1;
END
此外,我的 python 脚本的这一部分会导致同样的错误:
cursor = dbconn.cursor(dictionary=True)
# CheckQueueCount MySQL procedure retrieves how many tracks are currently in queuelist table
sql = "CALL CheckQueueCount"
cursor.execute(sql)
result = cursor.fetchone()
ret = result["QueueCount"]
cursor.close()
return ret
及其调用的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `CheckQueueCount`()
BEGIN
SELECT COUNT(ID) AS QueueCount FROM queuelist;
END
好的,我相信我已经解决了这个问题。我卸载了使用命令安装的连接器:
sudo pip3 install mysql-connector
而是安装了它:
sudo pip3 install mysql-connector-python
错误已消失。