sql error 42p01 ошибка отношение не существует

Hibernate + PostgreSQL: отношение не существует-ошибка SQL: 0, SQLState: 42P01

у меня возникли проблемы с работой с PostgreSQL и Hibernate, в частности, проблема, упомянутая в названии. Я искал в Сети уже несколько часов, но ни одно из найденных решений не сработало для меня.

Я использую Eclipse Java EE IDE для веб-разработчиков. Идентификатор сборки: 20090920-1017 с HibernateTools, Hibernate 3, PostgreSQL 8.4.3 на Ubuntu 9.10.

вот соответствующие файлы:

сообщение.класс!—15—>

сообщение.hbm.в XML

спящий режим.контекстно-свободная грамматика.в XML

Main

структура таблицы:

выход консоли Eclipse при запуске

файл журнала PostgreSQL

если я копирую / вставляю запрос в командная строка postgre и поместите значения В и; после этого он работает.

все в нижнем регистре, так что я не думаю, что это проблема.

если я переключаюсь на MySQL, тот же код того же проекта (я только меняю драйвер,URL, аутентификацию), он работает.

3 ответов

что вы ожидаете, что ваше имя базы данных и имя хоста будут? например, каковы ваши параметры psql для подключения к базе данных таким образом?

Совет: в PostgreSQL.conf, некоторые настройки вы можете рассмотреть:

Я только что решил ту же / подобную проблему, указав схему.

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

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

Источник

ОШИБКА PostgreSQL: 42P01: отношение «[Таблица]» не существует

У меня возникла эта странная проблема с использованием PostgreSQL 9.3 с таблицами, созданными с использованием qoutes. Например, если я создаю таблицу с использованием кавычек:

Таблица создана правильно, и я вижу, что кавычки сохраняются при просмотре ее на панели SQL pgAdminIII. Но когда я запрашиваю БД, чтобы найти список всех доступных таблиц (используя запрос ниже), я вижу, что результат не содержит кавычек вокруг имени таблицы.

Поскольку таблица была создана с кавычками, я не могу использовать имя таблицы, возвращенное из приведенного выше запроса, напрямую, поскольку оно не заключено в кавычки и вызывает ошибку, размещенную в заголовке.

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

У меня такая же проблема с именами столбцов, но я надеюсь, что если я смогу найти решение проблемы с именами таблиц, аналогичное решение будет работать и для имен столбцов.

4 ответа

Я настоятельно рекомендую НЕ использовать кавычки и заставить PostgreSQL вести себя без учета регистра. это делает жизнь намного проще. как только вы перейдете к цитированию, вам нужно будет использовать его ВЕЗДЕ, поскольку PostgreSQL станет очень точным.

Действительно постарайтесь любой ценой избежать подобных уловок. оставайтесь с 7-битным ascii для имен объектов.

Чтобы использовать ваш пример и смешать с другими результатами:

При использовании пакета npg в качестве ORM хранилища данных вы ожидаете, что структура ORM (Entity Framework в нашем случае) сгенерирует оператор sql, вы можете столкнуться с исключением PostgreSQL, отношение « Имя таблицы » не существует

Либо таблица не создана, либо в сгенерированном операторе SQL что-то отсутствует. Попробуйте отладить с помощью Visual Studio, вы увидите, что имя схемы не предшествует имени таблицы.

Источник

Нельзя просто использовать имя таблицы PostgreSQL («отношение не существует»)

Я пытаюсь запустить следующий PHP-скрипт для выполнения простого запроса к базе данных:

это приводит к следующей ошибке:

ошибка запроса: ошибка: отношение «sf_bands» не существует

7 ответов:

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

другими словами, следующее терпит неудачу:

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

Re ваш комментарий, вы можете добавить схему в «search_path», чтобы при ссылке на имя таблицы без уточнения ее схемы запрос соответствовал этому имени таблицы, проверяя каждую схему по порядку. Так же, как PATH в оболочке или include_path в PHP и др. Вы можете проверить свой текущий путь поиска схема:

вы можете изменить путь поиска схемы:

у меня были проблемы с этим и это история (печальная, но правдивая) :

если ваше имя таблицы все строчные, как: счета вы можете использовать: select * from AcCounTs и он будет работать нормально

если ваше имя таблицы все строчные, как: accounts Следующее не удастся: select * from «AcCounTs»

если ваше имя таблицы смешанный случай как: Accounts Следующее не удастся: select * from accounts

если ваше имя таблицы это смешанный случай как : Accounts Следующее будет работать нормально: select * from «Accounts»

Я не люблю вспоминать бесполезные вещи, как это, но надо ;)

запрос процесса Postgres отличается от других RDMS. Поместите имя схемы в двойную кавычку перед именем таблицы, например, «SCHEMA_NAME».»SF_Bands»

поместите параметр dbname в строку подключения. Это работает для меня, в то время как все остальное не удалось.

У меня была аналогичная проблема на OSX, но я пытался играть с двойными и одинарными кавычками. Для вашего случая, вы могли бы попробовать что-то вроде этого

для меня проблема заключалась в том, что я использовал запрос к этой конкретной таблице во время инициализации Django. Конечно, это вызовет ошибку, потому что эти таблицы не существовали. В моем случае это было get_or_create метод в пределах a admin.py файл, который выполнялся всякий раз, когда программное обеспечение выполняло какую-либо операцию (в данном случае миграцию). Надеюсь, это кому-то поможет.

я копал эту проблему больше, и узнал о том, как установить этот «search_path» по defoult для нового пользователя в текущей базе данных.

открыть Свойства базы данных, затем открыть лист » переменные» и просто добавьте эту переменную для вашего пользователя с фактическим значением.

Так что теперь ваш пользователь получит это schema_name по умолчанию, и вы можете использовать tableName без schemaName.

Источник

PostgreSQL ошибка: 42P01: отношение «[таблица] » не существует

У меня возникла эта странная проблема с использованием PostgreSQL 9.3 с таблицами, которые создаются с помощью qoutes. Например, если я создаю таблицу с помощью qoutes:

таблица создана правильно, и я вижу, что кавычки сохраняются при просмотре ее в области SQL pgAdminIII. Но когда я запрашиваю DB, чтобы найти список всех доступных таблиц (используя приведенный ниже запрос), я вижу, что результат не содержит кавычек вокруг имени таблицы.

Поскольку таблица была создана с кавычками, я не могу использовать имя таблицы, возвращенное из приведенного выше запроса, напрямую, так как оно не закавычено и выдает ошибку в заголовке.

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

У меня тоже есть такая же проблема с именами столбцов, но я надеюсь, что если я смогу найти решение проблемы имен таблиц, то аналогичное решение будет работать и для имен столбцов.

3 ответа

У меня есть скрипт postgresql, который выбирает всю информацию о таблицах и представлениях для конкретной базы данных. Я пытаюсь добавить дополнительный столбец, который будет отображать комментарий, связанный с таблицей или представлением. Но я получаю сообщение об ошибке, государственный SQL.

я бы настоятельно рекомендовал NOT использовать кавычки и заставить PostgreSQL вести себя без учета регистра. это делает жизнь намного проще. как только вы начнете цитировать, вы должны использовать его EVERYWHERE, так как PostgreSQL начнет быть очень точным.

При использовании пакета npg в качестве хранилища данных ORM вы ожидаете, что фреймворк ORM (в нашем случае Entity Framework) сгенерирует оператор sql, вы можете столкнуться с исключением PostgreSQL, отношение ‘Table Name’ не существует

Либо таблица не создана, либо в сгенерированном операторе SQL что-то отсутствует. Попробуйте выполнить отладку с помощью visual studio вы увидите, что имя схемы не является ведущим именем таблицы

в то время как PostgreSQL ожидает имя схемы. Разрешение находится в классе DBContext переопределите метод OnModelCreating и добавьте modelBuilder.HasDefaultSchema(«SchemaName»); и выполните базовый конструктор, который должен выглядеть следующим образом

Чтобы использовать ваш пример и смешивать другие результаты:

Похожие вопросы:

Здравствуйте, я довольно новичок в PostgreSQL, я постоянно получаю следующий код ошибки: ERROR: отношение contact не существует ********** ошибка ********** ERROR: отношение contact не существует.

Я пытаюсь запустить этот запрос через Npgsql, этот запрос хорошо работает, когда я запускаю его непосредственно на сервере, потому что я получаю: запрос возвращается успешно без результата в течение.

У меня есть скрипт postgresql, который выбирает всю информацию о таблицах и представлениях для конкретной базы данных. Я пытаюсь добавить дополнительный столбец, который будет отображать.

Я хочу создать внешний ключ, но получил ошибку 42P01: relation solicitantes не существует. У меня есть схемы: общественные и лабораторные. Мой стол называется procedencias. Я хочу создать внешний.

У меня есть проблема с триггером/последовательностью postgreSQL Когда я пытаюсь INSERT в моей таблице res_letterbox, у меня есть эта ошибка : ERROR: отношение res_id_mlb_seq не существует LINE 1.

Я пытаюсь создать временную таблицу в своей хранимой функции в Postgresql. Язык, который я использую-plpgsql. Когда я запускаю сохраненную функцию, она выдает SQL Error [42P01]. Точная Ошибка : Не.

Источник

«Ошибка 42P01: отношение не существует» (непубличная схема в PostgreSQL)

Я хочу создать внешний ключ, но получил ошибку 42P01: relation solicitantes не существует.

У меня есть схемы: общественные и лабораторные.

Мой стол называется procedencias. Я хочу создать внешний ключ для таблицы solicitantes. Оба принадлежат компании схемы. Даже автозаполнение поля целевой таблицы работает и находит нужную таблицу.

Я использую программное обеспечение Jetbrains DataGrip.

Это DDL таблицы под названием «solicitantes»:

Я думаю, что мне нужно указать имя схемы, но я не знаю, где это сделать в DataGrip.

2 ответа

У меня есть скрипт postgresql, который выбирает всю информацию о таблицах и представлениях для конкретной базы данных. Я пытаюсь добавить дополнительный столбец, который будет отображать комментарий, связанный с таблицей или представлением. Но я получаю сообщение об ошибке, государственный SQL.

вы пытались добавить явную схему в таблицу просителей?

У меня была такая же проблема с добавлением внешних ключей в таблицу в пользовательской схеме из окна изменить таблицу. Добавление схемы в поле «Target table» также не сработало. Вместо этого я выбрал «Open in editor», а не «Execute in database», и добавил схему к имени таблицы в сгенерированном операторе, и она работала нормально.

Похожие вопросы:

Здравствуйте, я довольно новичок в PostgreSQL, я постоянно получаю следующий код ошибки: ERROR: отношение contact не существует ********** ошибка ********** ERROR: отношение contact не существует.

Я пытаюсь запустить этот запрос через Npgsql, этот запрос хорошо работает, когда я запускаю его непосредственно на сервере, потому что я получаю: запрос возвращается успешно без результата в течение.

У меня есть скрипт postgresql, который выбирает всю информацию о таблицах и представлениях для конкретной базы данных. Я пытаюсь добавить дополнительный столбец, который будет отображать.

У меня есть проблема с триггером/последовательностью postgreSQL Когда я пытаюсь INSERT в моей таблице res_letterbox, у меня есть эта ошибка : ERROR: отношение res_id_mlb_seq не существует LINE 1.

Я пытаюсь создать временную таблицу в своей хранимой функции в Postgresql. Язык, который я использую-plpgsql. Когда я запускаю сохраненную функцию, она выдает SQL Error [42P01]. Точная Ошибка : Не.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • spy c tank приложение для ios
  • spth как заполнить образец