Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:ID da coluna não encontrado


Se você citar a coluna id ao criar OTHERTABLE usando aspas duplas ("id" ), então você também deve citá-lo ao criar a restrição de integridade referencial e ao consultar dados. Basicamente, você tem que citá-lo cada vez. Sugiro não citá-lo ao criar a tabela, porque assim você não precisa citá-lo mais tarde. Aspas significam que o identificador diferencia maiúsculas de minúsculas. Para o MySQL, funciona porque internamente o MySQL converte identificadores sem aspas em letras minúsculas, ao contrário de outros bancos de dados. Mas para H2 e outros bancos de dados não funciona.

As duas instruções a seguir funcionam para MySQL e 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)
);

Portanto, se você recebeu uma exceção na segunda instrução, provavelmente usou uma maneira diferente de criar a primeira tabela (OTHERTABLE ). E é aqui que está o problema.

Da próxima vez, se você fizer uma pergunta, inclua também o create table declaração da primeira tabela e poste o completo mensagem de erro.