sql >> Databáze >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:ID sloupce nebylo nalezeno

Pokud uvedete sloupec id při vytváření OTHERTABLE pomocí dvojitých uvozovek ("id" ), pak jej musíte citovat také při vytváření omezení referenční integrity a při dotazování na data. V podstatě to musíte pokaždé citovat. Doporučuji ne citujte jej při vytváření tabulky, protože tak jej později nemusíte citovat. Citace znamená, že identifikátor rozlišuje malá a velká písmena. Pro MySQL to funguje, protože MySQL interně převádí identifikátory unquotes na malá písmena, na rozdíl od jiných databází. Ale pro H2 a další databáze to nefunguje.

Následující dva příkazy fungují pro MySQL 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)
);

Pokud jste tedy dostali výjimku ve druhém příkazu, pravděpodobně jste použili jiný způsob vytvoření první tabulky (OTHERTABLE ). A tady je problém.

Pokud se příště zeptáte, zahrňte také create table výpis z první tabulky a odešlete úplné chybová zpráva.



  1. Jak zahodit unikátní v MySQL?

  2. Najděte všechny ty sloupce, které mají pouze hodnoty null, v tabulce MySQL

  3. ElasticSearch river JDBC MySQL nemaže záznamy

  4. Vložte objekt binárního řetězce pythonu do objektu blob MySQL