Jeśli cytujesz kolumnę id
podczas tworzenia OTHERTABLE
używając podwójnych cudzysłowów ("id"
). W zasadzie za każdym razem trzeba to cytować. Proponuję nie cytuj go podczas tworzenia tabeli, ponieważ w ten sposób nie musisz go później cytować. Cytowanie oznacza, że w identyfikatorze rozróżniana jest wielkość liter. W przypadku MySQL działa, ponieważ wewnętrznie MySQL konwertuje identyfikatory bez cudzysłowów na małe litery, w przeciwieństwie do innych baz danych. Ale w przypadku H2 i innych baz danych to nie działa.
Poniższe dwie instrukcje działają zarówno dla MySQL, jak i 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)
);
Więc jeśli masz wyjątek w drugiej instrukcji, najprawdopodobniej użyłeś innego sposobu utworzenia pierwszej tabeli (OTHERTABLE
). I tu jest problem.
Następnym razem, jeśli zadasz pytanie, dołącz także create table
oświadczenie pierwszej tabeli i opublikuj kompletne komunikat o błędzie.