Grails 表创建失败

Grails 表创建失败,grails,gorm,h2,Grails,Gorm,H2,我正在使用H2数据库来测试我的Grails应用程序。我有一些简单的域类,如: package mypackage class UserSession { User user String sessionTokenHash // last seen info String lastSeenIP Date lastSeenTime String lastSeenUserAgent String lastSeenURL } 但是,表的创建似

我正在使用H2数据库来测试我的Grails应用程序。我有一些简单的域类,如:

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] hbm2ddl.SchemaExport失败:创建表用户会话(id bigint not null自动增量,版本bigint not null,last seenip varchar(255)not null,last SEENU time datetime not null,last seenurl varchar(255)not null,last SEENU user varchar(255)not null,会话令牌hash varchar(255)不为null,用户_id bigint不为null,主键(id))引擎=InnoDB hbm2ddl.SchemaExport SQL语句“创建表用户会话(ID BIGINT NOT NULL自动增量,版本BIGINT NOT NULL,LAST SEENIP VARCHAR(255)NOT NULL,LAST SEENU TIME DATETIME NOT NULL,LAST SEENURL VARCHAR(255)NOT NULL,LAST SEENU SEENURL用户代理VARCHAR(255)NOT NULL,会话令牌VARCHAR(255)”中出现语法错误不为空,用户_ID BIGINT不为空,主键(ID))引擎=[*]INNODB”;预期的“标识符”;SQL语句: 创建表用户会话(id bigint not null自动增量,版本bigint not null,last seenip varchar(255)not null,last SEENU time datetime not null,last seenurl varchar(255)not null,last SEENU user代理varchar(255)not null,会话令牌hash varchar(255)not null,用户id bigint not null,主键(id))ENGINE=InnoDB[42001-147]
它被设置为在
create drop
模式下使用临时内存H2数据库。

我使用了错误的方言;my DataSource.groovy在DataSource块中设置了以下方言:

dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
我为开发数据源添加了以下行:

dialect = "org.hibernate.dialect.H2Dialect"

这已经解决了问题。

不确定这是否是问题所在,但我尽量避免使用域名中的“用户”和“会话”等“常用”词,因为它们可能具有某种受保护的grails行为,甚至可能在H2中有一些保留用途。