我不是对我在做什么很困惑就是有什么不对劲。
我正在从postgresql 8升级到16。我想连接到我的PostgreSQL数据库并选择一个表。
下面是我正在做的最小可重复示例:
#include <QtWidgets/QApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setPort(5432);
db.setDatabaseName("myDatabase");
db.setUserName("postgres");
db.setPassword("");
// Open the database
if (!db.open()) {
cout << "Error: " << db.lastError().text().toStdString();
return 1;
}
// Output databases
QStringList tables = db.tables(QSql::Tables);
foreach(const QString & table, tables) {
cout << "Table Name: " << table.toStdString() << endl;
}
// Select Table
QSqlTableModel model;
model.setTable("spatial_ref_sys");
cout << "Error: " << model.lastError().text().toStdString();
db.close();
return a.exec();
}
当运行代码时,它会打印一个表的列表:
表名称:spatial_ref_sys
表名称:schema1.table1
表名称:schema1.table2
表名称:schema2.table1
...
错误:找不到表spatial_ref_sys
此错误仅在我运行新的PostgreSQL 16数据库时显示,而在我的PostgreSQL 8数据库上不显示
1条答案
按热度按时间6kkfgxo01#
显然这是一个已知的bug。我使用的是旧版本的Qt5,所以我更新到了最新版本。