Михаиллл
МихаилллDec. 10, 2018, 8:42 a.m.

При подключении к PostgreSQL не удается открыть таблицу

PostgreSQL, Qt

Добрый день.
Я подключился к базе PostgreSQL.
Пытаюсь подключиться к таблице

QSqlTableModel *SearchTableModel = new QSqlTableModel(this);
SearchTableModel->setTable("ResumePostgresSQL");
SearchTableModel->select();

но выдает ошибку:
QSqlError("", "Unable to find table ResumePostgresSQL", "")
при этом эта таблица у меня точно есть.
Скажите пожалуйста, как подключиться к этой таблице

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

15
Evgenii Legotckoi
  • Dec. 10, 2018, 1:15 p.m.

Зайдите в консоль программы psql и посмотрите список таблиц с помощью следующей команды

\dt

Ну и ещё один момент. А соединение с базой данных в данный момент активно? Мало ли, вызов таблицы происходит раньше, чем следовал бы.

    Михаиллл
    • Dec. 11, 2018, 3:12 a.m.

    Но я в редакторе посмотрел, база с таблицей точно есть и в ней хранится тестовая информация.
    У меня стоит несколько версийPSQL. С 11 версии таблица считывается, а с 9,6 и 10 нет.
    И как оказалось HostName указывать не нужно и без него открывается.

      Evgenii Legotckoi
      • Dec. 11, 2018, 3:16 a.m.

      Ну это у вас считывается без хоста потому, что установка локальная. Если база данных будет крутиться на другом компьютере, то ничего считываться не будет.

      А по поводу версий 9,6, 10, 11 ничего удивительного, если у вас все три одновременно установлены. Один порт может слушать только одно приложение PostgreSQL. У них же у всех один и тот же порт. Только одно приложение может слушать порт. Соответственно только одно и отвечает. А остальные скорее всего даже и не запустились.

        Михаиллл
        • Dec. 11, 2018, 3:30 a.m.
        • (edited)

        Но у них разные порты: 5435, 5434, 5433, 5432

          Evgenii Legotckoi
          • Dec. 11, 2018, 3:42 a.m.

          Вообще нормально идёт только порт 5432. Не знаю, может быть при установке нескольких приложений и занятости одного порта там автоматически устанавливается другой. Может быть.

          Вообще, в чём проблема, если у вас одна из версий работает? В нормальном режиме никто не использует несколько версий приложения базы данных. В этом особо смысла нет. Каждое приложение PostgreSQL может хранить в себе сколько угодно баз данных.

            Михаиллл
            • Dec. 11, 2018, 3:44 a.m.

            Проблема с переносом базы данных. В 11 версии не меняется таблспэйс. Иначе как базу прикрепить к приложению и перенести на другой комп?

              Evgenii Legotckoi
              • Dec. 11, 2018, 3:49 a.m.

              Я правильно понимаю, что вот на такое в интеренте вы уже наталкивались?

              I assume that your tablespace name is tblspc.

              1. Get Oid of your tablespace
              test=# SELECT oid,spcname FROM pg_tablespace WHERE spcname = 'tblspc';
                oid  | spcname 
              -------+---------
               24580 | tblspc
              (1 row)
              
              1. Stop postgres
              $ pg_ctl -D $PGDATA stop
              
              1. Move directory from old one to new one
              $ mv /old/dir /new/dir
              

              or

              $ cp -r /old/dir /new/dir
              $ rm -rf /old/dir
              
              1. Change tablespace's link to new directory
              $ cd $PGDATA/pg_tblspc
              $ rm 24580
              $ ln -s /new/dir 24580
              
              1. Start postgres
              $ pg_ctl -D $PGDATA start
              

              Then, you can see the tablespace's directory has changed.

              test=# SELECT pg_tablespace_location(24580);
               pg_tablespace_location
              ------------------------
               /new/dir
              (1 row)
              
                Михаиллл
                • Dec. 11, 2018, 5:27 a.m.

                Нет, не доводилось. Как думаете, дело может быть в порте? Если все удалить и установить 9,6 в порт 5432, выше шанс что база заработает?

                  Evgenii Legotckoi
                  • Dec. 11, 2018, 5:54 a.m.

                  Не знаю, что вы имеете ввиду под удалить всё, но попробовать хотя бы порт установить на 5432 стоит.

                  вы смотрели номера портов в какой-то конфигурации? Или как-то иначе?

                    Михаиллл
                    • Dec. 11, 2018, 6:36 a.m.

                    да, они отображаются возле базы.
                    Удалил все лишнее, оставил 9,6.
                    Теперь порт этой версии 5432.
                    Тем не менее все та же ошибка

                      Evgenii Legotckoi
                      • Dec. 11, 2018, 7:45 a.m.

                      Хорошо, пойдём иначе, а какой тип ошибки у той QSqlError?

                      Что возвращает этот метод?

                      QSqlError::ErrorType QSqlError::type() const
                      
                        Михаиллл
                        • Dec. 11, 2018, 8:45 a.m.

                        Скажите пожалуйста, как им воспользоваться? Если его записать в qDebug()<<, то выдает ошибку компиляции.
                        Также заметил если бд и таблица состоит из цифр то выдает ошибку :
                        QSqlError("42601", "QPSQL: Unable to create query", "ОШИБКА: ошибка синтаксиса (примерное положение: \"123\")\nLINE 1: SELECT \"id\", \"int\" FROM 123\n
                        где 123 - название таблицы
                        а если в той-же бд создана таблица с названием, состоящим не только из цифр, то выдает ошибку :
                        QSqlError("", "Unable to find table Test1", "")
                        также в первом случае даже отображается название одного из двух столбцов

                          Evgenii Legotckoi
                          • Dec. 11, 2018, 9:23 a.m.
                          • (edited)

                          Скажите пожалуйста, как им воспользоваться? Если его записать в qDebug()<<, то выдает ошибку компиляции

                          что именно написано в ошибке?

                          ммм.. вас вообще как угораздило назвать таблицу 123 ? не надо называть таблицы только цифрами, а также наименования столбцов только цифрами.

                          В том же самом MySQL вообще в документации это запрещено. Мне лень копаться в документации PostgreSQL. Но, наверняка я найду что-то подобное.

                          Запрос скорее всего воспринимается не как имя таблице а как переменная типа int...

                            Михаиллл
                            • Dec. 11, 2018, 11 a.m.

                            врятли, иначе бы в описании ошибки не появились название 2 моих столбцов.
                            и уже точно можно так называть названия баз, в 11 версии у меня как раз к такой базе вышло подключиться и получить из нее информацию.
                            но у меня есть другая таблица с названием из цифр и букв, и к ней не выходит подключиться.
                            Если пишу так:

                             qDebug()<<QSqlError::ErrorType QSqlError::type() const;
                            
                            

                            то говорит что нет скобочки:
                            D:\QTProject\ReaderResume\mainwindow.cpp:1106: ошибка: expected '(' for function-style cast or type construction

                              Михаиллл
                              • Dec. 12, 2018, 12:52 p.m.

                              Оказывается оно все переводит в нижний регистр и нужно так писать:

                              SearchTableModel->setTable("\"Test2\"");
                              

                                Comments

                                Only authorized users can post comments.
                                Please, Log in or Sign up
                                г
                                • ги
                                • April 23, 2024, 10:51 p.m.

                                C++ - Test 005. Structures and Classes

                                • Result:41points,
                                • Rating points-8
                                l
                                • laei
                                • April 23, 2024, 4:19 p.m.

                                C ++ - Test 004. Pointers, Arrays and Loops

                                • Result:10points,
                                • Rating points-10
                                l
                                • laei
                                • April 23, 2024, 4:17 p.m.

                                C++ - Тест 003. Условия и циклы

                                • Result:50points,
                                • Rating points-4
                                Last comments
                                k
                                kmssrFeb. 9, 2024, 2:43 a.m.
                                Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                EVA
                                EVADec. 25, 2023, 6:30 p.m.
                                Boost - static linking in CMake project under Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                J
                                JonnyJoDec. 25, 2023, 4:38 p.m.
                                Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                                G
                                GvozdikDec. 19, 2023, 5:01 a.m.
                                Qt/C++ - Lesson 056. Connecting the Boost library in Qt for MinGW and MSVC compilers Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                                Now discuss on the forum
                                G
                                GarApril 22, 2024, 12:46 p.m.
                                Clipboard Как скопировать окно целиком в clipb?
                                DA
                                Dr Gangil AcademicsApril 20, 2024, 2:45 p.m.
                                Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
                                a
                                a_vlasovApril 14, 2024, 1:41 p.m.
                                Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
                                Павел Дорофеев
                                Павел ДорофеевApril 14, 2024, 9:35 a.m.
                                QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
                                f
                                fastrexApril 4, 2024, 11:47 a.m.
                                Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…

                                Follow us in social networks