2012-04-17 13 views
4

私はGrailsアプリケーションのテストにH2データベースを使用しています。テーブルの作成に失敗しました

package mypackage 

class UserSession { 
    User user 
    String sessionTokenHash 

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

ただし、表が正しく作成されていないようです。

hbm2ddl.SchemaExport Unsuccessful: 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, primary key (id)) ENGINE=InnoDB 
hbm2ddl.SchemaExport Syntax error in SQL statement "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, PRIMARY KEY (ID)) ENGINE=[*]INNODB "; expected "identifier"; SQL statement: 
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, primary key (id)) ENGINE=InnoDB [42001-147]

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

+0

問題があるかどうかわかりませんが、私はドメイン名に "User"や "Session"のような "共通"の言葉を避けようとしています。何らかの保護されたgrailsの動作や、 H2で。 – Mikey

答えて

6

私は間違った方言を使用していました。私DataSource.groovyデータソースブロック内の次の方言を設定していた:これは、問題を修正しました

dialect = "org.hibernate.dialect.H2Dialect" 

dialect = "org.hibernate.dialect.MySQL5InnoDBDialect" 

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

関連する問題