QT 在使用sqlite 创建表时出错create table error: out of memory Unable to execute statemen

时间:2021-03-03 23:02:07

if(drivers.contains(QString("QSQLITE")))
    {
        QSqlDatabase db = QSqlDatabase::addDatabase(QString("QSQLITE"));
        QSqlQuery qry(db);
        QSqlError err;
        db.setDatabaseName(QString("test"));
        if(!db.open())
        {
            err = db.lastError();
            qDebug()<<"open db error:"<<err.text()<<"\n";
            return -1;
        }
        if(!qry.exec("create table if not exists family(id character(8) not null primary key,chs_name nchar(10) not null)"))
        {
            err = qry.lastError();
            qDebug()<<"create table error:"<<err.text()<<err.type()<<"\n";
            return -1;
        }
        if(!qry.exec("INSERT family VALUES('00000001','王韬')"))
        {
            err = qry.lastError();
            qDebug()<<"insert values error:"<<err.text()<<"\n";
            return -1;
        }
    }
    else
    {
        qDebug()<<"Driver \'QSQLITE\' has not been installed\n";
        return -1;
    }



程序运行结果
create table error: "out of memory Unable to execute statement" 2 
 
C:\Qt\Project\test-bin\db1\debug\db1.exe exited with code -1



我把创建表的语句放到sqlite3的控制台下执行没有任何问题
sqlite> create table if not exists family(id character(8) not null primary key,c
hs_name nchar(10) not null);
sqlite> .tables
family
sqlite>


求高手帮忙看看

6 个解决方案

#1


试试看不要用id 做名字呢

#2


改了,问题依旧,求帮顶一下

#3


高手何在???

#4


怎么就没人帮我看一下呢,求帮顶一下

#5


关注这个问题。。楼主解决了没啊?

#6


我也遇到了这个问题,不过我找到解决方案了:
QSqlQuery qry(db);
之前必须先打开db也就是上面这一行必须在
db.open();
之后才行

#1


试试看不要用id 做名字呢

#2


改了,问题依旧,求帮顶一下

#3


高手何在???

#4


怎么就没人帮我看一下呢,求帮顶一下

#5


关注这个问题。。楼主解决了没啊?

#6


我也遇到了这个问题,不过我找到解决方案了:
QSqlQuery qry(db);
之前必须先打开db也就是上面这一行必须在
db.open();
之后才行