sql >> Database teknologi >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLEundtagelse:Kolonne-id blev ikke fundet

Hvis du citerer kolonnen id når du opretter OTHERTABLE ved hjælp af dobbelte anførselstegn ("id" ), så skal du også citere det, når du opretter den referentielle integritetsbegrænsning, og når du forespørger data. Som udgangspunkt skal du citere det hver gang. Jeg foreslår at ikke citer det, når du laver tabellen, for på den måde behøver du ikke citere det senere. Citering betyder, at identifikatoren skelner mellem store og små bogstaver. For MySQL virker det, fordi MySQL internt konverterer identifikatorer uden anførselstegn til små bogstaver i modsætning til andre databaser. Men for H2 og andre databaser virker det ikke.

De følgende to udsagn virker for både MySQL og H2:

CREATE TABLE IF NOT EXISTS OTHERTABLE (
  id BIGINT AUTO_INCREMENT NOT NULL
);
CREATE TABLE IF NOT EXISTS SOMETABLE (
  id BIGINT AUTO_INCREMENT NOT NULL,
  FOREIGN KEY (id) REFERENCES OTHERTABLE(id)
);

Så hvis du fik en undtagelse i den anden sætning, har du højst sandsynligt brugt en anden måde at oprette den første tabel på (OTHERTABLE ). Og det er her problemet er.

Næste gang, hvis du stiller et spørgsmål, bedes du også inkludere create table sætning af den første tabel, og post den komplette fejlmeddelelse.



  1. Sådan udføres kun en trigger, når en specifik kolonne er opdateret (SQL-server)

  2. MySQL ACOS() Funktion – Returner Arc Cosinus for et tal

  3. Hvad er formålet med String[] whereArgs i int delete (String table, String whereClause, String[] whereArgs) funktion?

  4. En SQL-forespørgsel, der skal vælges, indtil SUM(brugerantal) når 1000