sql >> データベース >  >> RDS >> Mysql

org.h2.jdbc.JdbcSQLException:列IDが見つかりません

    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を投稿します エラーメッセージ。



    1. Postgresが列が存在しないと言うのはなぜですか?

    2. パフォーマンスの質問:重複キーの更新と更新(MySQL)について

    3. プロファイルからデータベースメールアカウントを削除する(SSMS)

    4. パフォーマンスの高いCTEテーブルと一時テーブルのどちらですか?