Внезапная ошибка: org.postgresql.util.PSQLException: ОШИБКА: нулевое значение в столбце «id» нарушает ненулевое ограничение - PullRequest
0 голосов
/ 15 мая 2019

Итак, у меня есть метод, который вставляет адресные данные в базу данных.

    public Address(String street_name, Integer evidenceNumber, Integer describingNumber, Integer PSC, String city, String state) {
    this.streetName = new SimpleStringProperty(street_name);
    this.evidenceNumber = new SimpleIntegerProperty(evidenceNumber);
    this.describingNumber = new SimpleIntegerProperty(describingNumber);
    this.postcode = new SimpleIntegerProperty(PSC);
    this.city = new SimpleStringProperty(city);
    this.state = new SimpleStringProperty(state);
}

....

public boolean addAddress() throws SQLException {
    int controlDuplicate = -1;
    controlDuplicate = findAddress();
    if (controlDuplicate != -1) {
        return false;
    }
    if (this.describingNumber.get() < 0 || this.evidenceNumber.get() < 0 || "".equals(this.city.get()) || "".equals(this.state.get()) || this.postcode.get() < 0) {
        return false;
    }
    //connector.getConn().setAutoCommit(false);
    String addAddress = "INSERT INTO address(street_name, evidence_number, describing_number, postcodes, city, country)"
            + "VALUES('" + this.streetName.get() + "', " + this.evidenceNumber.get() + ", " + this.describingNumber.get() + ", " + this.postcode.get() + ", '" + this.city.get() + "', '" + this.state.get() + "')";
    Statement st = connector.getConn().createStatement();
    try {
        st.executeUpdate(addAddress);
    } catch (PSQLException ex) {
        System.err.println("Insert Address execution unsuccessful!");
        Logger.getLogger(Address.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    }
    st.close();
    return true;
}

Все работало нормально, пока вдруг, когда я попытался сделать это снова, вывод был:

org.postgresql.util.PSQLException: ОШИБКА: нулевое значение в столбце "id" нарушает ненулевое ограничение

Кто-нибудь знает, где может быть проблема? И прежде чем кто-либо спросит, «id» устанавливается как Serial Primary Key, и до недавнего времени с этим методом не было проблем.

РЕДАКТИРОВАТЬ: Кроме того, кажется, что все данные из всех объектов БД внезапно теряются. Это случилось с кем-нибудь?

1 Ответ

0 голосов
/ 15 мая 2019

Проверьте определение таблицы из pgAdmin или psql (с \ d table_name), проверьте, является ли 'id' последовательным.А PostgreSQL внутренне создает последовательность для столбца типа serial, например, в вашем случае 'address_id_seq', пожалуйста, проверьте, существует ли эта последовательность и имеет ли соответствующие GRANTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...