Om du citerar kolumnen id
när du skapar OTHERTABLE
med dubbla citattecken ("id"
), måste du också citera det när du skapar referensintegritetsbegränsningen och när du frågar efter data. I grund och botten måste du citera det varje gång. Jag föreslår att du inte citera det när du skapar tabellen, för på så sätt behöver du inte citera det senare. Citering betyder att identifieraren är skiftlägeskänslig. För MySQL fungerar det eftersom MySQL internt konverterar identifierare utan citat till gemener, till skillnad från andra databaser. Men för H2 och andra databaser fungerar det inte.
Följande två satser fungerar för både MySQL och 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å om du fick ett undantag i den andra satsen, har du troligen använt ett annat sätt att skapa den första tabellen (OTHERTABLE
). Och det är här problemet ligger.
Nästa gång, om du ställer en fråga, vänligen inkludera även create table
satsen för den första tabellen och posta den fullständiga felmeddelande.