sql >> Databasteknik >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLEundantag:Kolumn-ID hittades inte

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.



  1. MySQL-fel:SELECT-listan finns inte i GROUP BY-satsen

  2. MySQL-utlösare:kopiera auto_increment-värdet till en annan kolumn vid infogning

  3. Postgres-fel vid uppdatering av kolumndata

  4. Alias ​​för att visa tabeller MySQL-resultat