我可以针对内置内存数据库运行我的grails应用程序,但是当我尝试使用MYSQL时,它始终无法使用以下错误创建架构。
2014-04-11 16:05:16,445 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Unsuccessful: create table registration_code (id bigint not null auto_increment, date_created datetime not null, token varchar(255) not null, username varchar(255) not null, primary key (id)) type=InnoDB
2014-04-11 16:05:16,448 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1
2014-04-11 16:05:16,449 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Unsuccessful: create table report (id bigint not null auto_increment, version bigint not null, category varchar(255) not null, description longtext not null, name varchar(255) not null unique, reportsql longtext not null, views integer not null, primary key (id)) type=InnoDB
这个错误几乎没有告诉我。
可能是因为某种原因,它试图创建一个内置数据库内置的mysql架构。
registration_code表可能是我安装的spring安全模块的一部分。 "报告"表我可以手工创建,它不包含任何保留字或类似字。
在mysql中,我创建了一个与应用程序同名的数据库(我猜我必须这样做)。我使用的用户对所有内容和创建的数据库都具有全局权限。
有没有办法调试这个?例如任何方式来查看SQL Grails尝试使用什么?
我试图调用我所有的域对象和字段而不是保留的东西(例如secRoles而不是角色)
我的datasource.groovy看起来像这样:
dataSource {
dialect = org.hibernate.dialect.MySQLInnoDBDialect
pooled = true
jmxExport = true
driverClassName = "com.mysql.jdbc.Driver"
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
environments {
development {
dataSource {
dbCreate = "create"
username = "myuser"
password = "mypass"
url = 'jdbc:mysql://localhost/'
}
mysql 5.6 grails 2.3.6 Windows服务器。
答案 0 :(得分:2)
好的,解决方案就是:
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
而不是:
dialect = org.hibernate.dialect.MySQLInnoDBDialect
遗憾的是,grails没有在默认的conf文件中附带示例mysql连接。