Si vous citez la colonne id
lors de la création de OTHERTABLE
en utilisant des guillemets doubles ("id"
), vous devez également le citer lors de la création de la contrainte d'intégrité référentielle et lors de l'interrogation des données. En gros, il faut le citer à chaque fois. Je suggère de ne pas citez-le lors de la création du tableau, car de cette façon, vous n'aurez pas à le citer plus tard. Les guillemets signifient que l'identifiant est sensible à la casse. Pour MySQL, cela fonctionne car MySQL convertit en interne les identifiants sans guillemets en minuscules, contrairement aux autres bases de données. Mais pour H2 et d'autres bases de données, cela ne fonctionne pas.
Les deux instructions suivantes fonctionnent à la fois pour MySQL et 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)
);
Donc, si vous avez une exception dans la deuxième instruction, vous avez probablement utilisé une méthode différente pour créer la première table (OTHERTABLE
). Et c'est là que se situe le problème.
La prochaine fois, si vous posez une question, veuillez également inclure le create table
déclaration de la première table, et poster le complet message d'erreur.