Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QSqlTableModel() empty on Ubuntu but works on Windows ?

QSqlTableModel() empty on Ubuntu but works on Windows ?

Scheduled Pinned Locked Moved Solved General and Desktop
qsqltablemodelqsqldatabasepostgresql
41 Posts 4 Posters 8.4k 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.
  • J JonB
    15 Jun 2020, 12:03

    @R-P-H

    Inside that class I have a function that generates the QSqlTableModel

    You don't want to directly create a QSqlTableModel anywhere, you want it now to create a MyTableModel. E.g if you currently have a new QSqlTableModel somewhere it now goes new MyTableModel. This is basic C++ sub-classing, I don't know whether you're confused over that.

    include it and create model using MyTableModel *model = new MyTableModel(nullptr, db); instead I still get a protected function error when calling its selectStatement() member.

    Assuming you've got the first bit right, you still cannot call a protected method on an instance from outside of the MyTableModel class code, that's what protected is all about. You will need something like the definition I showed you of QString MyTableModel::selectStatement() const. You can either then write another public method in MyTableModel which calls it and the outside world can go via that public method, or (as I do) override all the methods in MyTableModel which do queries, updates etc. and have them print it out. It takes a few minutes to write these override functions, but once you have them from then on it's a lot easier to see what's going on, do logging, handle any errors etc. from the QSql... classes you use.

    R Offline
    R Offline
    R-P-H
    wrote on 15 Jun 2020, 20:16 last edited by
    #31

    @JonB The result of selectStatement() is " ".

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 15 Jun 2020, 20:28 last edited by
      #32

      Would you be able to provide a small step by step guide to reproduce your test database ? Meaning the command you are currently using on your Linux machine to create the role and the database.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      R 1 Reply Last reply 16 Jun 2020, 19:39
      0
      • S SGaist
        15 Jun 2020, 20:28

        Would you be able to provide a small step by step guide to reproduce your test database ? Meaning the command you are currently using on your Linux machine to create the role and the database.

        R Offline
        R Offline
        R-P-H
        wrote on 16 Jun 2020, 19:39 last edited by R-P-H
        #33

        @SGaist Hi, I just use psql to create the database/table/user.

        CREATE DATABASE my_db
            WITH 
            OWNER = postgres
            ENCODING = 'UTF8'
            TABLESPACE = pg_default
            CONNECTION LIMIT = -1;
        
        CREATE ROLE my_user WITH
          LOGIN
          NOSUPERUSER
          INHERIT
          NOCREATEDB
          NOCREATEROLE
          NOREPLICATION
          ENCRYPTED PASSWORD 'md5hidden';
        
        CREATE TABLE public.my_table
        (
            example_column character varying COLLATE pg_catalog."default",
        )
        
        TABLESPACE pg_default;
        
        ALTER TABLE public.my_table OWNER to postgres;
        
        GRANT INSERT, SELECT, DELETE ON TABLE public.my_table TO my_user;
        

        So for example:

        sudo -u postgres psql -c 'one of the above blocks of code'
        

        So here my_db is the database name, my_user is the role I'm using to access the table and my_table is the table name.

        1 Reply Last reply
        0
        • R Offline
          R Offline
          R-P-H
          wrote on 18 Jun 2020, 21:00 last edited by
          #34

          Is there anything else I can try ?

          1 Reply Last reply
          0
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 18 Jun 2020, 21:19 last edited by
            #35

            Sorry I did not had time to test the database.

            One thing that you could try (I don't think it would change anything but worth a try), reorder the database setup and add your custom role and it setup both at the end.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            R 1 Reply Last reply 19 Jun 2020, 19:35
            0
            • S SGaist
              18 Jun 2020, 21:19

              Sorry I did not had time to test the database.

              One thing that you could try (I don't think it would change anything but worth a try), reorder the database setup and add your custom role and it setup both at the end.

              R Offline
              R Offline
              R-P-H
              wrote on 19 Jun 2020, 19:35 last edited by
              #36

              @SGaist said in QSqlTableModel() empty on Ubuntu but works on Windows ?:

              Sorry I did not had time to test the database.

              One thing that you could try (I don't think it would change anything but worth a try), reorder the database setup and add your custom role and it setup both at the end.

              I guess I could try that but why would the error be

              QSqlError("", "Unable to find table logs", "")
              

              then ?

              1 Reply Last reply
              0
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 10 Jul 2020, 21:48 last edited by
                #37

                Gut feeling: PostgreSQL namespace.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                R 1 Reply Last reply 11 Jul 2020, 13:14
                0
                • S SGaist
                  10 Jul 2020, 21:48

                  Gut feeling: PostgreSQL namespace.

                  R Offline
                  R Offline
                  R-P-H
                  wrote on 11 Jul 2020, 13:14 last edited by
                  #38

                  @SGaist said in QSqlTableModel() empty on Ubuntu but works on Windows ?:

                  Gut feeling: PostgreSQL namespace.

                  I had a look, but I don't quite understand how it applies to this...

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 11 Jul 2020, 19:18 last edited by
                    #39

                    The database role must have access to the namespace in order to access the relation it contains.

                    There might be a glitch there.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    R 1 Reply Last reply 16 Jul 2020, 18:49
                    0
                    • S SGaist
                      11 Jul 2020, 19:18

                      The database role must have access to the namespace in order to access the relation it contains.

                      There might be a glitch there.

                      R Offline
                      R Offline
                      R-P-H
                      wrote on 16 Jul 2020, 18:49 last edited by
                      #40

                      @SGaist said in QSqlTableModel() empty on Ubuntu but works on Windows ?:

                      The database role must have access to the namespace in order to access the relation it contains.

                      There might be a glitch there.

                      Yet the same role (same exact application/code) works fine on Windows ?

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        R-P-H
                        wrote on 7 Oct 2020, 14:21 last edited by
                        #41

                        Upgrading to Qt Version 5.15+ solved the issue.

                        1 Reply Last reply
                        1

                        • Login

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