QT QSqlError(“2036“, “QMYSQL3: Unable to bind value“)解决

  • Post author:
  • Post category:mysql



提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档




完整问题描述


QSqlError(“2036”, “QMYSQL3: Unable to bind value”, “Using unsupported buffer type: 437325656 (parameter: 3)”)



继上一次Qt连接数据库报错QSqlDatabase: QMYSQL driver not loaded,通过添加sql动态连接文件libmysql.dll解决后,又被tableView控件可视化操作数据库和query.addBindValue(),query.bindValue()多行插入一直失败困扰,今天终于得到解决



一、tableView控件插入数据失败



1.错误描述


输入要插入的数据点击按钮触发submitAll()

model->submitAll();//提交动作

事件后,数据插入失败,但是删除数据和查找是能成功执行的,lastError()

qDebug()<<model->lastError();

打印错误提示显示错误QSqlError(“2036”, “QMYSQL3: Unable to bind value”, “Using unsupported buffer type: 437325656 (parameter: 3)”).



2.问题查找

百度问题,大多是都是说数据库驱动,连接文件之类的,还有说到这个报错是版本太高,所以后面下载了不是很高的版本的文件做尝试,最后基本确定还是libmysql.dll文件的问题,虽然上次使用的文件能成功连接数据库但是依然存在问题,于是偶然发现了MySQL官网Oracle有适用各个平台的各个版本的连接下载,

下载地址


在这里插入图片描述

Qt选择的是

MySQL Connector/C


在这里插入图片描述



3.成功解决

由于上一次数据库连接失败,上一文:

Qt连接数据库报错QSqlDatabase: QMYSQL driver not loaded

:写到的尝试过将下载的mysql中的libmysql.dll文件添加到Qt目录中失 败认为可能是mysql 64位和Qt 32位,位数不匹配的问题,此次我选择下载了不是很新(6.1.1 2017)版本的64(mysql-connector-c-6.1.11-winx64.zip)位和32(mysql-connector-c-6.1.11-win32.zip)版本做尝试。

压缩文件lib目录下就有libmysql.dll文件,放到Qt bin目录下覆盖原来的文件,直接编译运行,依然报错QSqlDatabase: QMYSQL driver not loaded吗,然后使用32位的文件,**成功运行,且测试多行数据插入,完美执行,数据插入成功,最后在tableView中插入数据,也成功插入数据,最后问题完美解决!



总结:

本来都不打算解决这个问题因为实在没有头绪,觉得可能是操作版本不兼容之类的问题也不想再重装数据库,开发环境啥的,实在太麻烦,看到有的大佬重装过几个版本的数据库都失败,真的是很佩服解决问题的决心和行动力。

有这个问题的小伙伴可以试试,刚开始写博客记录错误解决,排版啥的还不是很熟悉····



版权声明:本文为qq_32279165原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。