sql >> Database >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:Kolom-ID niet gevonden

Als u de kolom id . citeert bij het maken van OTHERTABLE dubbele aanhalingstekens gebruiken ("id" ), dan moet je het ook citeren bij het maken van de referentiële integriteitsbeperking en bij het opvragen van gegevens. In principe moet je het elke keer citeren. Ik stel voor om niet citeer het bij het maken van de tabel, want zo hoef je het later niet te citeren. Citeren betekent dat de identifier hoofdlettergevoelig is. Voor MySQL werkt het omdat MySQL intern identifiers zonder aanhalingstekens converteert naar kleine letters, in tegenstelling tot andere databases. Maar voor H2 en andere databases werkt het niet.

De volgende twee instructies werken voor zowel MySQL als 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)
);

Dus als je een uitzondering kreeg in de tweede instructie, heb je waarschijnlijk een andere manier gebruikt om de eerste tabel te maken (OTHERTABLE ). En hier zit het probleem.

Als u de volgende keer een vraag stelt, voeg dan ook de create table toe statement van de eerste tabel, en post de complete foutmelding.



  1. Hoe maak ik een Django-model met ForeignKeys dat geen cascade-verwijderingen naar zijn kinderen uitvoert?

  2. hoe de overeenkomst tussen twee strings in MYSQL te berekenen?

  3. Hoe te testen op een leeg SQL-resultaat in ASP

  4. Mysql installeren op leopard:kan geen verbinding maken met de lokale MySQL-server via socket