Sqlite 数据库 BUG 记录

打印错误信息

 QSqlError lastError = query.lastError();
 qDebug() << "Error:"<<lastError;

1. QSqlError(“”, “”, “”)

原因:可能是数据类型不对,
sql语句错误,导致建表的时候,数据类型是这样的,就会造成这种莫名错误.
在这里插入图片描述

2.QSqlError(“1”, “Unable to execute statement”, “table TIME_SLICE has no column named UCFIIsChecked”)

原因:无法执行的sql语句,在表中,没有这个字段,可以看一下是不是字段名错误,或者是字符串换行没有用 **“逗号”**隔开.

3.QSqlError(“”, “Parameter count mismatch”, “”)

原因:参数数量不匹配,一般是因为关键字因为换行没隔开 .

比如: 以下的set和字段1中间没有被隔开,就会出现这种错误.

"UPDATE TABLE SET"
"字段1 = ?,字段2 = ?...."

4. QSqlQuery::prepare: database not open QSqlError(“”, “”, “”)

原因:在数据库操作途中,被关闭,会有这种题型,并且也会提示出**QSqlError(“”, “”, “”)**这种错误.

5. QSqlError(“”, “Unable to fetch row”, “No query”)

无法获取行
原因 1:字段信息不同一,一般是表内没有sql语句内的字段名,检查下sql与表是否同一.
原因 2:success = query.exec(strSql );查询的时候 没有把sql传参使用,也会提醒这个错误.

6. 浮点数存储精度问题

浮点数存储在数据库,会出现精度异常,比如1.00存储的是1.0000000000032215或者是0.9999999999999999999999
这样的值,与实际值不符;
尝试了FLOAT/DECIMAL(10,3) 长度和小数位,但是并不如意,
所以只好用笨办法,存储的时候存储VARCHAR类型,查询的时候再根据对应类型转换,这样可以避免精度异常.

7. 数据库DB文件还在 里面的表全没了

原因没找到
添加补救方法:查询表在不在 不在重新建表 并且补上缺省值
这条sql的返回值是 1 | 0;
这里的 ‘table’ ‘tableName’ 必须使用单引号引起来 否则会sql错误:
syntax error 语法错误
no such column:tableName

QString sql = tr("SELECT COUNT(*) FROM sqlite_master where type ='table' and name = '%1'").arg(tableName);

8.QSqlError(“1”, “Unable to execute statement”, "near " “: syntax error”)

原因:还是语法错误 这次是在最后少了后括号
"near " " 这里确实不好找 不过还好 逐步排查 还是找到了

9.truncate table 表名 失败(QSqlError(“”, “Unable to fetch row”, “No query”))

原因:SQLite 没有truncate语法
使用delete也可以清空表

delete from Table_Name

QSqlDatabasePrivate::database: unable to open database: “out of memory Error opening database”

原因:

先说网络上查的结果吧:

1 路径问题,动态路径(日期 时间)或者是 命名出错误

我的现象及原因

2 内存不足

我是开了八个线层在做别的通讯,在通讯失败的时候就会一直通讯,线程在sleep,或者是在一直发消息,影响了数据库的操作.我关闭了通讯的操作,就不会有这个错误出现,所以暂时原因定位在这里.

解决:1 永远保持通讯,就不会出现这种阻塞,导致数据库的作业
解决:2 得尝试数据库的作业也是新的线程作业,互不耽误,会不会解决.

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光顶术士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值