5

Grails アプリのテストに H2 データベースを使用しています。次のようないくつかの単純なドメイン クラスがあります。

package mypackage

class UserSession {
    User user
    String sessionTokenHash

    // last seen info
    String lastSeenIP
    Date lastSeenTime
    String lastSeenUserAgent
    String lastSeenURL
}

ただし、テーブルが正しく作成されていないようです。

hbm2ddl.SchemaExport 失敗: テーブル user_session を作成します (id bigint は null ではありません auto_increment、バージョン bigint は null ではありません、last_seenip varchar(255) は null ではありません、last_seen_time datetime は null ではありません、last_seenurl varchar(255) は null ではありません、last_seen_user_agent varchar(255) は null ではありません、session_token_hash varchar(255) null ではない、user_id bigint null ではない、主キー (id)) ENGINE=InnoDB
hbm2ddl.SchemaExport SQL ステートメントの構文エラー "CREATE TABLE USER_SESSION (ID BIGINT NOT NULL AUTO_INCREMENT, VERSION BIGINT NOT NULL, LAST_SEENIP VARCHAR(255) NOT NULL, LAST_SEEN_TIME DATETIME NOT NULL, LAST_SEENURL VARCHAR(255) NOT NULL, LAST_SEEN_USER_AGENT VARCHAR(255) NOT NULL、SESSION_TOKEN_HASH VARCHAR(255) NOT NULL、USER_ID BIGINT NOT NULL、主キー (ID)) ENGINE=[*]INNODB "; 期待される「識別子」; SQL ステートメント:
create table user_session (id bigint not null auto_increment, version bigint not null, last_seenip varchar(255) not null, last_seen_time datetime not null, last_seenurl varchar(255) not null, last_seen_user_agent varchar(255) not null, session_token_hash varchar(255) not null null, user_id bigint not null, 主キー (id)) ENGINE=InnoDB [42001-147]

モードで一時的なインメモリ H2 データベースを使用するように設定されていcreate-dropます。

4

1 に答える 1

9

私は間違った方言を使っていました。私の DataSource.groovy には、dataSource ブロックに次の方言が設定されていました。

dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"

開発データ ソースに次の行を追加しました。

dialect = "org.hibernate.dialect.H2Dialect"

これで問題は解決しました。

于 2012-04-17T16:54:00.280 に答える