postgresql QSqlTableModel:无法找到在较新的数据库上不工作的表

kuuvgm7e  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(197)

我不是对我在做什么很困惑就是有什么不对劲。
我正在从postgresql 8升级到16。我想连接到我的PostgreSQL数据库并选择一个表。
下面是我正在做的最小可重复示例:

  1. #include <QtWidgets/QApplication>
  2. #include <QtSql/QSqlDatabase>
  3. #include <QtSql/QSqlTableModel>
  4. #include <QtSql/QSqlError>
  5. #include <QtSql/QSqlQuery>
  6. #include <iostream>
  7. using namespace std;
  8. int main(int argc, char *argv[])
  9. {
  10. QCoreApplication a(argc, argv);
  11. QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
  12. db.setHostName("localhost");
  13. db.setPort(5432);
  14. db.setDatabaseName("myDatabase");
  15. db.setUserName("postgres");
  16. db.setPassword("");
  17. // Open the database
  18. if (!db.open()) {
  19. cout << "Error: " << db.lastError().text().toStdString();
  20. return 1;
  21. }
  22. // Output databases
  23. QStringList tables = db.tables(QSql::Tables);
  24. foreach(const QString & table, tables) {
  25. cout << "Table Name: " << table.toStdString() << endl;
  26. }
  27. // Select Table
  28. QSqlTableModel model;
  29. model.setTable("spatial_ref_sys");
  30. cout << "Error: " << model.lastError().text().toStdString();
  31. db.close();
  32. return a.exec();
  33. }

当运行代码时,它会打印一个表的列表:
表名称:spatial_ref_sys
表名称:schema1.table1
表名称:schema1.table2
表名称:schema2.table1
...
错误:找不到表spatial_ref_sys
此错误仅在我运行新的PostgreSQL 16数据库时显示,而在我的PostgreSQL 8数据库上不显示

6kkfgxo0

6kkfgxo01#

显然这是一个已知的bug。我使用的是旧版本的Qt5,所以我更新到了最新版本。

相关问题