sql >> Base de Datos >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:ID de columna no encontrada

Si cita la columna id al crear OTHERTABLE usando comillas dobles ("id" ), también debe citarlo al crear la restricción de integridad referencial y al consultar datos. Básicamente, tienes que citarlo cada vez. Sugiero no cítelo al crear la tabla, porque de esa manera no tiene que citarlo más adelante. Citar significa que el identificador distingue entre mayúsculas y minúsculas. Para MySQL, funciona porque internamente MySQL convierte los identificadores entre comillas a minúsculas, a diferencia de otras bases de datos. Pero para H2 y otras bases de datos no funciona.

Las dos declaraciones siguientes funcionan tanto para MySQL como para 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)
);

Entonces, si obtuvo una excepción en la segunda declaración, lo más probable es que haya usado una forma diferente de crear la primera tabla (OTHERTABLE ). Y aquí es donde está el problema.

La próxima vez, si hace una pregunta, incluya también la create table declaración de la primera tabla, y publique el completo mensaje de error.