Mysql
 sql >> Baza danych >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:nie znaleziono identyfikatora kolumny

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego Railsy ignorują Rollback w (pseudo)zagnieżdżonej transakcji?

  2. Nie można zatrzymać procesu mysql

  3. Doktryna 2 Zamknij połączenie

  4. Jaki jest najlepszy sposób na tworzenie przyrostowych kopii zapasowych w MySQL?

  5. SELECT COUNT() vs mysql_num_rows();