Mysql
 sql >> Datenbank >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:Spalten-ID nicht gefunden

Wenn Sie die Spalte id zitieren beim Erstellen von OTHERTABLE mit doppelten Anführungszeichen ("id"). ), dann müssen Sie es auch beim Erstellen der Einschränkung der referenziellen Integrität und beim Abfragen von Daten angeben. Grundsätzlich müssen Sie es jedes Mal zitieren. Ich schlage vor, nicht zitieren Sie es beim Erstellen der Tabelle, denn so müssen Sie es später nicht zitieren. Anführungszeichen bedeuten, dass bei der Kennung zwischen Groß- und Kleinschreibung unterschieden wird. Für MySQL funktioniert es, weil MySQL im Gegensatz zu anderen Datenbanken intern Bezeichner ohne Anführungszeichen in Kleinbuchstaben umwandelt. Aber für H2 und andere Datenbanken funktioniert es nicht.

Die folgenden zwei Anweisungen funktionieren sowohl für MySQL als auch für 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)
);

Wenn Sie also in der zweiten Anweisung eine Ausnahme erhalten haben, haben Sie höchstwahrscheinlich eine andere Methode verwendet, um die erste Tabelle zu erstellen (OTHERTABLE ). Und hier liegt das Problem.

Wenn Sie das nächste Mal eine Frage stellen, geben Sie bitte auch den create table an Anweisung der ersten Tabelle und poste die vollständige Fehlermeldung.