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.