Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. QtSql findet postgres treiber nicht und will QCoreApplication
Forum Updated to NodeBB v4.3 + New Features

QtSql findet postgres treiber nicht und will QCoreApplication

Scheduled Pinned Locked Moved Unsolved German
34 Posts 4 Posters 4.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Dany
    wrote on last edited by
    #4

    Nein. Da ist nichts static drin. Den ganzen Code hier rein brezeln wäre auch etwas heftig denke ich mal. Welcher Teil wäre denn sinnvoll?

    Zudem, unter Linux läuft es ja.

    Der ganze Debug, oder reicht der teil von Postgres?

    jsulmJ 2 Replies Last reply
    0
    • D Dany

      Nein. Da ist nichts static drin. Den ganzen Code hier rein brezeln wäre auch etwas heftig denke ich mal. Welcher Teil wäre denn sinnvoll?

      Zudem, unter Linux läuft es ja.

      Der ganze Debug, oder reicht der teil von Postgres?

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #5

      @Dany Der Code wo du die Datenbankverbindung initialisierst

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • D Dany

        Nein. Da ist nichts static drin. Den ganzen Code hier rein brezeln wäre auch etwas heftig denke ich mal. Welcher Teil wäre denn sinnvoll?

        Zudem, unter Linux läuft es ja.

        Der ganze Debug, oder reicht der teil von Postgres?

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #6

        @Dany said in QtSql findet postgres treiber nicht und will QCoreApplication:

        oder reicht der teil von Postgres?

        sollte reichen

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • D Offline
          D Offline
          Dany
          wrote on last edited by Dany
          #7

          Das hier wäre der Teil, wo das Plugin gefunden und nicht gefunden wird.

          Got keys from plugin meta data ("QODBC3", "QODBC")
          QFactoryLoader::QFactoryLoader() looking at "C:/Qt-5-15/5.15.2/mingw81_64/plugins/sqldrivers/qsqlpsql.dll"
          Found metadata in lib C:/Qt-5-15/5.15.2/mingw81_64/plugins/sqldrivers/qsqlpsql.dll, metadata=
          {
              "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
              "MetaData": {
                  "Keys": [
                      "QPSQL7",
                      "QPSQL"
                  ]
              },
              "archreq": 0,
              "className": "QPSQLDriverPlugin",
              "debug": false,
              "version": 331520
          }
          
          
          Got keys from plugin meta data ("QPSQL7", "QPSQL")
          ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
          Cannot load library C:\Qt-5-15\5.15.2\mingw81_64\plugins\sqldrivers\qsqlpsql.dll: Das angegebene Modul wurde nicht gefunden.
          QLibraryPrivate::loadPlugin failed on "C:/Qt-5-15/5.15.2/mingw81_64/plugins/sqldrivers/qsqlpsql.dll" : "Cannot load library C:\\Qt-5-15\\5.15.2\\mingw81_64\\plugins\\sqldrivers\\qsqlpsql.dll: Das angegebene Modul wurde nicht gefunden."
          QSqlDatabase: QPSQL driver not loaded
          

          Und hier der Code:

              private:
                  QString serverDatenbank;
                  QString serverBenutzer;
                  QString serverPasswort;
                  QString serverAdresse;
                  QString serverPort;
                  
                  QSqlDatabase dbSQL;
          
                  vector<string> fehler;
          
              public:
                  Datenbank()
                  {
                      serverDatenbank = "xxx";
                      serverBenutzer = "xxx";
                      serverPasswort = "xxx";
                      serverAdresse = "xxx.xxx.xxx";
                      serverPort = "5432";
          
          qDebug() << QSqlDatabase::drivers();
                      dbSQL = QSqlDatabase::addDatabase("QPSQL");
                  }
          
          1 Reply Last reply
          0
          • Christian EhrlicherC Offline
            Christian EhrlicherC Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #8

            QSqlDatabase sollte nicht als Member benutzt werden (siehe Doku).
            Und jetzt auf dbSQL = QSqlDatabase::addDatabase("QPSQL"); einen breakpoint setzen, im Debugger starten und den backtrace anschauen.

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            1 Reply Last reply
            0
            • D Offline
              D Offline
              Dany
              wrote on last edited by Dany
              #9
              warning: section .gnu_debuglink not found in C:\Qt-5-15\5.15.2\mingw81_64\plugins\sqldrivers\qsqlpsql.dll.debug
              

              Ich bin mir jetzt nicht ganz sicher, ob ich das richtig gemacht habe. Die Datei ist auf jeden Fall vorhanden.

               Volume in Laufwerk C: hat keine Bezeichnung.
               Volumeseriennummer: 2AE4-E11D
              
               Verzeichnis von c:\Qt-5-15\5.15.2\mingw81_64\plugins\sqldrivers
              
              27.01.2021  14:13    <DIR>          .
              27.01.2021  14:13    <DIR>          ..
              27.01.2021  14:13         1.271.605 qsqlite.dll
              27.01.2021  14:13         8.452.804 qsqlite.dll.debug
              27.01.2021  14:11           184.168 qsqlodbc.dll
              27.01.2021  14:11         2.446.455 qsqlodbc.dll.debug
              27.01.2021  14:11           174.895 qsqlpsql.dll
              27.01.2021  14:11         2.591.641 qsqlpsql.dll.debug
              

              Ich hab mit Cmake das ganze auf Debug gestellt, deshalb sucht der nach .debug.

              Ich hab auch addDatabase jetzt aus der Klasse direkt unter QApplication in Main gesetzt. Damit ist die Meldung mit QCoreApplication schon mal verschwunden. Lustig wie es unter Linux geht und unter Windows nicht.

              J.HilkJ 1 Reply Last reply
              0
              • D Offline
                D Offline
                Dany
                wrote on last edited by
                #10

                Ich hab jetzt auch mal mit windeployqt gearbeitet. Leider ebenfalls ohne Erfolg.

                Was ich aber jetzt gelesen habe, so ein Effekt kommt auch zustande, wenn das Plugin und das Programm verschiedene Bit haben. Also das Plugin hat 64-Bit das Programm 32. Ich kann mir aber nicht vorstellen, dass ich mein Programm mit 32 Bit compiliere, denn ich arbeite ja auf einem 64 Bit System und MinGW ist auch 64 Bit. Würde mich stark wundern.

                Wenn ich SQLITE versuche, dass wird problemlos geladen.

                1 Reply Last reply
                0
                • Christian EhrlicherC Offline
                  Christian EhrlicherC Offline
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #11

                  Hast Du meinen Post überhaupt gelesen?

                  'Und jetzt auf dbSQL = QSqlDatabase::addDatabase("QPSQL"); einen breakpoint setzen, im Debugger starten und den backtrace anschauen.'

                  Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                  Visit the Qt Academy at https://academy.qt.io/catalog

                  D 1 Reply Last reply
                  0
                  • D Dany
                    warning: section .gnu_debuglink not found in C:\Qt-5-15\5.15.2\mingw81_64\plugins\sqldrivers\qsqlpsql.dll.debug
                    

                    Ich bin mir jetzt nicht ganz sicher, ob ich das richtig gemacht habe. Die Datei ist auf jeden Fall vorhanden.

                     Volume in Laufwerk C: hat keine Bezeichnung.
                     Volumeseriennummer: 2AE4-E11D
                    
                     Verzeichnis von c:\Qt-5-15\5.15.2\mingw81_64\plugins\sqldrivers
                    
                    27.01.2021  14:13    <DIR>          .
                    27.01.2021  14:13    <DIR>          ..
                    27.01.2021  14:13         1.271.605 qsqlite.dll
                    27.01.2021  14:13         8.452.804 qsqlite.dll.debug
                    27.01.2021  14:11           184.168 qsqlodbc.dll
                    27.01.2021  14:11         2.446.455 qsqlodbc.dll.debug
                    27.01.2021  14:11           174.895 qsqlpsql.dll
                    27.01.2021  14:11         2.591.641 qsqlpsql.dll.debug
                    

                    Ich hab mit Cmake das ganze auf Debug gestellt, deshalb sucht der nach .debug.

                    Ich hab auch addDatabase jetzt aus der Klasse direkt unter QApplication in Main gesetzt. Damit ist die Meldung mit QCoreApplication schon mal verschwunden. Lustig wie es unter Linux geht und unter Windows nicht.

                    J.HilkJ Offline
                    J.HilkJ Offline
                    J.Hilk
                    Moderators
                    wrote on last edited by
                    #12

                    hi @Dany

                    ist das eigentlich nur der Fall für nen debug build oder auch wenn du es über release machst ?

                    Hab mal

                    section .gnu_debuglink not found
                    

                    gegoogled und dieser StackOverflow threat ist dabei heraus gesprungen
                    https://stackoverflow.com/questions/32560862/cant-debug-in-qt-creator-with-cmake-project/32560926#32560926

                    Könnte interessant sein, da es explizit um cmake geht, hier und auf Stackoverflow


                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                    Q: What's that?
                    A: It's blue light.
                    Q: What does it do?
                    A: It turns blue.

                    1 Reply Last reply
                    0
                    • Christian EhrlicherC Christian Ehrlicher

                      Hast Du meinen Post überhaupt gelesen?

                      'Und jetzt auf dbSQL = QSqlDatabase::addDatabase("QPSQL"); einen breakpoint setzen, im Debugger starten und den backtrace anschauen.'

                      D Offline
                      D Offline
                      Dany
                      wrote on last edited by
                      #13

                      @Christian-Ehrlicher Ja habe ich. Nur muss ich gestehen, mit Debugger bin ich jetzt nicht wirklich firm. Unter Linux mit Visual Studio Code funktioniert das, aber wie ich das mit MinGW mache weiss ich leider nicht wirklich.

                      @J-Hilk Ja das ist auch bei Release so. Ich hab jetzt auch, um mal sicher zu gehen das es nicht an qemu liegt, dass alles zusammengepackt und auf einem nativen Windows gestartet. Läuft super, nur eben das Plugin kann nicht geladen werden.

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        Dany
                        wrote on last edited by
                        #14

                        Also, ich wurschtele mich gerade in gdb ein. Einen Break habe ich auf addDatabase gesetzt, wo auch brave angehalten wird und danach habe ich Backtrace benutzt. So sieht das dann aus.

                        (gdb) break addDatabase
                        Breakpoint 1 at 0x40c6c0
                        (gdb) run
                        Starting program: c:\wsc\win-build\wsc.exe
                        [New Thread 292.0x1448]
                        [New Thread 292.0xccc]
                        [New Thread 292.0x151c]
                        
                        Thread 1 hit Breakpoint 1, 0x000000006d7c8d56 in QSqlDatabase::addDatabase(QString const&, QString const&) ()
                           from C:\Qt-5-15\5.15.2\mingw81_64\bin\Qt5Sql.dll
                        (gdb) backtrace
                        #0  0x000000006d7c8d56 in QSqlDatabase::addDatabase(QString const&, QString const&) ()
                           from C:\Qt-5-15\5.15.2\mingw81_64\bin\Qt5Sql.dll
                        #1  0x000000000040bdcb in main (argc=1, argv=0xb4350) at ../main.cpp:25
                        (gdb)
                        

                        Da ich jetzt nicht glaube, dass das besonders weitergeholfen hat würde ich darum bitten, mir da ein bisschen zu helfen.

                        1 Reply Last reply
                        0
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by
                          #15

                          Dann zeige mal deine main.cpp, vor allem Zeile 25

                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                          Visit the Qt Academy at https://academy.qt.io/catalog

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            Dany
                            wrote on last edited by Dany
                            #16

                            Bitteschön

                            int main(int argc, char* argv[]) 
                            {
                                QApplication app(argc, argv);
                            
                                db.setdbSQL(QSqlDatabase::addDatabase("QPSQL")); // Line 25
                            
                                konfig.ladeThema("wsc-standard");
                                
                                ich.setOnline(false);
                                ich.loadPrivateKey();
                            
                                HauptWindow hw;
                            
                                hw.show();
                            
                                return app.exec();
                            }
                            
                            1 Reply Last reply
                            0
                            • Christian EhrlicherC Offline
                              Christian EhrlicherC Offline
                              Christian Ehrlicher
                              Lifetime Qt Champion
                              wrote on last edited by
                              #17

                              Und wenn Du dann dort einen step weiter gehst kommt die Fehlermeldung auf stdout?
                              Bitte auch mal mit der Umgebungsvariablen QT_FATAL_WARNINGS im Debugger starten und schauen wo er dann crasht.

                              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                              Visit the Qt Academy at https://academy.qt.io/catalog

                              D 1 Reply Last reply
                              0
                              • Christian EhrlicherC Christian Ehrlicher

                                Und wenn Du dann dort einen step weiter gehst kommt die Fehlermeldung auf stdout?
                                Bitte auch mal mit der Umgebungsvariablen QT_FATAL_WARNINGS im Debugger starten und schauen wo er dann crasht.

                                D Offline
                                D Offline
                                Dany
                                wrote on last edited by
                                #18

                                @Christian-Ehrlicher Genau. An der Stelle taucht dann die Meldung auf, dass der Driver nicht geladen werden konnte. Obwohl sie ja in der selben Ausgabe angezeigt wird.

                                Was ich mittlerweile herausgefunden habe, wie es scheint kann Qt auch dann einen Treiber nicht laden, wenn dem irgendwas fehlt. So bin ich auch drauf gekommen, dass Architekturunterschiede da Probleme machen können. Eben der Driver wäre 32 Bit und das Programm 64 Bit. Was ich mir aber hier nicht wirklich vorstellen kann. Ausserdem habe ich die Treiber ja nach Anleitung von der Qt Website gebaut und das hat hervorragend funktioniert.

                                Wenn ich QT_FATAL_WARNINGS auf 1 setze, startet das Programm gar nicht erst :(

                                1 Reply Last reply
                                0
                                • Christian EhrlicherC Offline
                                  Christian EhrlicherC Offline
                                  Christian Ehrlicher
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #19

                                  Ich habe mich eher darauf konzentiert:

                                  QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

                                  Das der postgresql-Treiber nicht geladen wird liegt wie @J-Hilk schon geschrieben hat an fehlendenden Depenencies -> Dependency Walker benutzen und schauen was das Qt psql-Plugin benötigt.

                                  Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                                  Visit the Qt Academy at https://academy.qt.io/catalog

                                  D 1 Reply Last reply
                                  0
                                  • Christian EhrlicherC Christian Ehrlicher

                                    Ich habe mich eher darauf konzentiert:

                                    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

                                    Das der postgresql-Treiber nicht geladen wird liegt wie @J-Hilk schon geschrieben hat an fehlendenden Depenencies -> Dependency Walker benutzen und schauen was das Qt psql-Plugin benötigt.

                                    D Offline
                                    D Offline
                                    Dany
                                    wrote on last edited by
                                    #20

                                    @Christian-Ehrlicher said in QtSql findet postgres treiber nicht und will QCoreApplication:

                                    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

                                    Das hat sich ja schon erledigt, seit ich addDatabase() aus der Klasse in die Main gepackt habe.

                                    1 Reply Last reply
                                    0
                                    • D Offline
                                      D Offline
                                      Dany
                                      wrote on last edited by Dany
                                      #21

                                      So. Ich hab das jetzt mal ausprobiert und anscheinend fehlt dem Ding die libpq.dll. Die ist aber natürlich mal wieder vorhanden. Ich meine aber gesehen zu haben, läuft nicht mit MinGW zusammen. Also hab ich versucht sie unter MinGW zu bauen. Funktioniert hat configure problemlos, aber wenn ich make verwende, dann fehlt die datei bki-stamp. Super.

                                      Der Walker spukt unter anderem folgendes:

                                      Error: At least one required implicit or forwarded dependency was not found.
                                      Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
                                      Error: Modules with different CPU types were found.
                                      Error: A circular dependency was detected.
                                      Warning: At least one delay-load dependency module was not found.
                                      Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
                                      
                                      1 Reply Last reply
                                      0
                                      • D Offline
                                        D Offline
                                        Dany
                                        wrote on last edited by
                                        #22

                                        Also, ich arbeite mich weiter vor. libpq.dll läuft jetzt soweit, aber der Walker sagt, das Modul findet unter Anderem folgendes nicht:

                                        API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL
                                        

                                        Was ist denn das jetzt schon wieder :(

                                        jsulmJ 1 Reply Last reply
                                        0
                                        • D Dany

                                          Also, ich arbeite mich weiter vor. libpq.dll läuft jetzt soweit, aber der Walker sagt, das Modul findet unter Anderem folgendes nicht:

                                          API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL
                                          

                                          Was ist denn das jetzt schon wieder :(

                                          jsulmJ Offline
                                          jsulmJ Offline
                                          jsulm
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #23

                                          @Dany said in QtSql findet postgres treiber nicht und will QCoreApplication:

                                          Was ist denn das jetzt schon wieder :(

                                          Das kannst du ignorieren

                                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved