我正在使用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/