列id
を引用する場合 OTHERTABLE
を作成するとき 二重引用符を使用する("id"
)、参照整合性制約を作成するとき、およびデータをクエリするときにも引用符で囲む必要があります。基本的に、毎回引用する必要があります。 しないことをお勧めします テーブルを作成するときに引用します。そうすれば、後で引用する必要がないからです。引用とは、識別子で大文字と小文字が区別されることを意味します。 MySQLの場合、他のデータベースとは異なり、内部で引用符で囲まれていない識別子を小文字に変換するため、これは機能します。ただし、H2およびその他のデータベースの場合は機能しません。
次の2つのステートメントは、MySQLと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)
);
したがって、2番目のステートメントで例外が発生した場合は、別の方法を使用して最初のテーブル(OTHERTABLE
)を作成した可能性があります。 )。そして、これが問題の原因です。
次回、質問する場合は、create table
も含めてください。 最初のテーブルのステートメント、および completeを投稿します エラーメッセージ。