骑着毛驴数星星 2022-12-24 09:25 采纳率: 0%
浏览 25
已结题

QT中mysql与命令行的数据不统一?

我使用qt连接mysql后新建的表,用命令行却查询不出来,用mysql workbench也查询不到,命令行和mysql workbench的信息是同步的。什么原因呢?
qt创建表的过程:

    qDebug() << QSqlDatabase::drivers() ;

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //db.setHostName("127.0.0.1");  //连接本地主机
    db.setHostName("localhost");  //连接本地主机
    db.setPort(3306);
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("123456");

    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "link success");
    }
    else {
        QMessageBox::information(this, "infor", "link failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }

    //创建表
      QSqlQuery query(db);
    //QSqlQuery query;
      ok = query.exec("create table student(id int primary key auto_increment, "
                      "name varchar(255), age int, score int)ENGINE=INNODB;");
      if (!ok){
          qDebug()<< "create table:" << query.lastError();
      }

结果是没报错的,后面还有插入数据的代码,也是正常的。但是用命令行查询却查不到名字为student的表:

命令行跟mysql workbench信息是同步的。

  • 写回答

1条回答 默认 最新

  • curating 2022-12-25 18:23
    关注
      ok = query.exec("create table student(id int primary key auto_increment, "
                          "name varchar(255), age int, score int)ENGINE=INNODB;");
    

    把上面这行去掉换行:
    ok = query.exec("create table student(id int primary key auto_increment, " "name varchar(255), age int, score int)ENGINE=INNODB;");
    明显语法错误。
    因该是:

     ok = query.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;");
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月26日
  • 创建了问题 12月24日