Nano Hash - криптовалюты, майнинг, программирование

org.postgresql.util.PSQLException: ОШИБКА: идентификатор столбца не существует — веб-служба Java

Я разрабатываю веб-службу Java, которая развернута в дикой природе. Он подключен к базе данных postgresql. В этой базе данных у меня есть таблица с именем xx_activity. В нем есть столбец с именем id, который также является первичным ключом. Вот запрос, используемый для создания таблицы:

CREATE TABLE xx_activity
(
  id serial NOT NULL,
  baseitemid integer
);

для подключения к этой таблице я использую следующий код Java:

conn = postgresVoyateDBConnection();
            query = conn.prepareStatement("select id, baseitemid" +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");
            
            query.setInt(1, id);
            ResultSet rs = query.executeQuery();

Однако, когда я вызываю метод, включающий этот код, я получаю сообщение об ошибке:

org.postgresql.util.PSQLException: ОШИБКА: идентификатор столбца не существует

Позиция: 8

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

Также обратите внимание, что запросы без предложения where, например:

conn = postgresVoyateDBConnection();
        query = conn.prepareStatement("select id, baseitemid " +
                                        "from xx_activity");
        
        ResultSet rs = query.executeQuery();

работать отлично.

Я также пробовал без использования escape-символов, но выдает ту же ошибку. Я также проверил в pgadmin, и в имени столбца нет пробела в конце, а также нет никаких заглавных букв (в этом случае другой запрос выбора не должен был работать?).

Как это можно исправить?

09.09.2016

  • Используйте pgAdmin или какой-либо другой инструмент для подключения к вашей базе данных, используя те же учетные данные, которые вы используете в своем приложении. Выполнить select * from xx_activity Есть ли в результате столбец id? Проверьте, есть ли у вас две таблицы xx_activity — одна в общедоступной схеме, другая в пользовательской схеме. 09.09.2016
  • @ 112g есть только 1 схема, общедоступная схема. Я попробовал выбор, и он работает даже из кода Java. Кроме того, даже предложение where работает из pgadmin, интересно, почему оно не работает из кода? 09.09.2016

Ответы:


1

Исправлено, проблема заключалась в отсутствии пробела. После первой строки запроса должен быть пробел, как показано ниже:

query = conn.prepareStatement("select id, baseitemid " +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");

EDIT: управляющие символы не нужны для id; поэтому окончательный ответ должен быть:

 query = conn.prepareStatement("select id, baseitemid " +
                                                "from xx_activity " +
                                                "where id = ? ");
09.09.2016
  • Почему id в кавычках? Это не требуется. 09.09.2016
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..