При подключении к PostgreSQL не удается открыть таблицу
Добрый день.
Я подключился к базе PostgreSQL.
Пытаюсь подключиться к таблице
- QSqlTableModel *SearchTableModel = new QSqlTableModel(this);
- SearchTableModel->setTable("ResumePostgresSQL");
- SearchTableModel->select();
но выдает ошибку:
QSqlError("", "Unable to find table ResumePostgresSQL", "")
при этом эта таблица у меня точно есть.
Скажите пожалуйста, как подключиться к этой таблице
2
252
Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Последние комментарии
- AK1 апреля 2025 г. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP9 марта 2025 г. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- Сейчас обсуждают на форуме
- DT14 апреля 2025 г. 15:38Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- f15 февраля 2025 г. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Зайдите в консоль программы psql и посмотрите список таблиц с помощью следующей команды
Ну и ещё один момент. А соединение с базой данных в данный момент активно? Мало ли, вызов таблицы происходит раньше, чем следовал бы.
Но я в редакторе посмотрел, база с таблицей точно есть и в ней хранится тестовая информация.
У меня стоит несколько версийPSQL. С 11 версии таблица считывается, а с 9,6 и 10 нет.
И как оказалось HostName указывать не нужно и без него открывается.
Ну это у вас считывается без хоста потому, что установка локальная. Если база данных будет крутиться на другом компьютере, то ничего считываться не будет.
А по поводу версий 9,6, 10, 11 ничего удивительного, если у вас все три одновременно установлены. Один порт может слушать только одно приложение PostgreSQL. У них же у всех один и тот же порт. Только одно приложение может слушать порт. Соответственно только одно и отвечает. А остальные скорее всего даже и не запустились.
Но у них разные порты: 5435, 5434, 5433, 5432
Вообще нормально идёт только порт 5432. Не знаю, может быть при установке нескольких приложений и занятости одного порта там автоматически устанавливается другой. Может быть.
Вообще, в чём проблема, если у вас одна из версий работает? В нормальном режиме никто не использует несколько версий приложения базы данных. В этом особо смысла нет. Каждое приложение PostgreSQL может хранить в себе сколько угодно баз данных.
Проблема с переносом базы данных. В 11 версии не меняется таблспэйс. Иначе как базу прикрепить к приложению и перенести на другой комп?
Я правильно понимаю, что вот на такое в интеренте вы уже наталкивались?
I assume that your tablespace name is tblspc.
or
Then, you can see the tablespace's directory has changed.
Нет, не доводилось. Как думаете, дело может быть в порте? Если все удалить и установить 9,6 в порт 5432, выше шанс что база заработает?
Не знаю, что вы имеете ввиду под удалить всё, но попробовать хотя бы порт установить на 5432 стоит.
вы смотрели номера портов в какой-то конфигурации? Или как-то иначе?
да, они отображаются возле базы.
Удалил все лишнее, оставил 9,6.
Теперь порт этой версии 5432.
Тем не менее все та же ошибка
Хорошо, пойдём иначе, а какой тип ошибки у той QSqlError?
Что возвращает этот метод?
Скажите пожалуйста, как им воспользоваться? Если его записать в qDebug()<<, то выдает ошибку компиляции.
Также заметил если бд и таблица состоит из цифр то выдает ошибку :
QSqlError("42601", "QPSQL: Unable to create query", "ОШИБКА: ошибка синтаксиса (примерное положение: \"123\")\nLINE 1: SELECT \"id\", \"int\" FROM 123\n
где 123 - название таблицы
а если в той-же бд создана таблица с названием, состоящим не только из цифр, то выдает ошибку :
QSqlError("", "Unable to find table Test1", "")
также в первом случае даже отображается название одного из двух столбцов
что именно написано в ошибке?
ммм.. вас вообще как угораздило назвать таблицу 123 ? не надо называть таблицы только цифрами, а также наименования столбцов только цифрами.
В том же самом MySQL вообще в документации это запрещено. Мне лень копаться в документации PostgreSQL. Но, наверняка я найду что-то подобное.
Запрос скорее всего воспринимается не как имя таблице а как переменная типа int...
врятли, иначе бы в описании ошибки не появились название 2 моих столбцов.
и уже точно можно так называть названия баз, в 11 версии у меня как раз к такой базе вышло подключиться и получить из нее информацию.
но у меня есть другая таблица с названием из цифр и букв, и к ней не выходит подключиться.
Если пишу так:
то говорит что нет скобочки:
D:\QTProject\ReaderResume\mainwindow.cpp:1106: ошибка: expected '(' for function-style cast or type construction
Оказывается оно все переводит в нижний регистр и нужно так писать: