Mariadb在尝试使用python填充数据库时出现接口错误

qyyhg6bp  于 2023-01-17  发布在  Python
关注(0)|答案(1)|浏览(170)

我正试图在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

并且代码在此之后停止。

5cg8jx4n

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。

相关问题