Grails:无法在mysql上创建表

时间:2014-04-11 15:26:47

标签: mysql grails

我可以针对内置内存数据库运行我的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服务器。

1 个答案:

答案 0 :(得分:2)

好的,解决方案就是:

dialect = org.hibernate.dialect.MySQL5InnoDBDialect

而不是:

dialect = org.hibernate.dialect.MySQLInnoDBDialect

遗憾的是,grails没有在默认的conf文件中附带示例mysql连接。