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

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_toto 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)ENT,语法错误” NOT NULL,SESSION_TOKEN_HASH VARCHAR(255)NOT NULL,USER_ID BIGINT NOT NULL,主键(ID))ENGINE = [*] INNODB“;预期的“标识符”; SQL语句:
创建表user_session(id bigint不为null auto_increment,版本bigint不为null,last_seenip varchar(255)不为null,last_seen_time datetime不为空,last_seenurl varchar(255)不为空,last_seen_user_agent varchar(255)不为空,session_token_hash varchar(255)不为空null,user_id bigint不为null,主键(id))ENGINE = InnoDB [42001-147]

设置为在create-drop模式下使用临时内存中的H2数据库。

最佳答案

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

dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"

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

这解决了问题。

关于grails - 表创建失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10195397/

10-10 17:30
查看更多