我使用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信息是同步的。
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;");