我正试图在mariadb中创建JSON配置文件。在更新数据库完成的21-22%时,mariadb抛出接口错误,没有任何进一步的信息。
我通过选择不同的数据顺序(ASC、DESC)检查了它不是因为数据点,它总是停在20- 22%。如果我再次运行代码,不清除表,它会100%成功运行。
但是如果我在清除表的情况下运行它,同样的问题仍然存在。
代码:
# analysis.py
def updateSpecific(data, name):
try:
cursor = mydb.Cursor()
# Getting the column name and value to update in mariadb
columnname = COLUMNNAMES[name]
columnvalue = data[columnname]
if columnvalue == None:
return
cursor.execute("select * from " + name +" where " + columnname + " = %s ", (columnvalue,))
dataInDB = cursor.fetchone()
newentry = False
if dataInDB == None:
newentry = True
newdata = {}
else: # if not a new entry in the db, load it from cursor fetch
newdata = json.loads(dataInDB[2])
# Append the new data, push the new data to db
newdata = getupdatedDB(name, newdata, data)
newdata = json.dumps(newdata)
if newentry:
cursor.execute("insert into " + name + "(" + columnname +", total, data) values (%s, %s ,%s)", (columnvalue, 1, newdata))
else:
cursor.execute("update " + name + " set total = %s, data = %s where " +columnname + " = %s", ((dataInDB[1]+1), newdata, columnvalue))
except mariadb.Error as e:
print(f"Error: {e}")
print(data,name,columnvalue)
finally:
cursor.close()
mydb.commit()
错误是
Updating...: 22%|█████████████▉ | 2183/10054 [02:46<11:48, 11.11it/s]
Error:
Updating...: 22%|█████████████▉ | 2184/10054 [02:46<10:00, 13.10it/s]
Traceback (most recent call last):
File "analysis.py", line 155, in <module>
updateDB(data_dict)
File "analysis.py", line 130, in updateDB
updateLoc(data)
File "analysis.py", line 115, in updateLoc
updateSpecific(data, COLUMNNAME)
File "analysis.py", line 90, in updateSpecific
mydb.commit()
mariadb.InterfaceError
当我试图将mydb.commit()移到try块中时,出现以下错误:
Error:
Error: Invalid parameter number
Error: Invalid parameter number
Error: Unknown prepared statement handler (6710628) given to mysqld_stmt_reset
Error: Invalid parameter number
Error: Unknown prepared statement handler (6710628) given to mysqld_stmt_reset
Error: Invalid parameter number
并且代码在此之后停止。
1条答案
按热度按时间5cg8jx4n1#
这可能与CONPY-197中的问题相同,由于缺乏用户反馈,该问题仍未关闭。
然而,不再支持MariaDB连接器/Python 1.0系列,大多数游标实现都在1.1中重写,因此我强烈建议升级您的python模块。
此外,Connector/C 3.2已停产(在更新的服务器包中,它已被C/C 3.3取代),因此您还必须在升级MariaDB Connector/Python之前更新Connector/C。最低要求版本为Connector/C 3.3.1,最好安装实际版本3.3.3。
如果问题仍然存在,请在MariaDB issue tracker中提交bug。