" CREATETABLE"使用Grails在MariaDB上

时间:2017-06-29 11:32:51

标签: grails mariadb

我的应用程序是基于Grails和MySQL构建的。我们最近将数据库切换到MariaDB,我理解它完全符合MySQL。我现在正在尝试在Grails应用程序中添加新的域对象。表创建失败,出现以下错误。

您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以便在' type = InnoDB'附近使用正确的语法。第1行

Grails在语句末尾创建TYPE = INNODB的表。我发现使用ENGINE = InnoDB代替TYPE = INNODB解决了这个问题。我在DB上手动运行了create table SQL并且它运行正常。但是,我不知道Grails如何使用ENGINE = INNODB Vs Type = INNODB。

FYI。我的应用程序使用 MySQL5InnoDBDialect 和以下驱动程序。

的MySQL:MySQL的连接器的Java:5.1.32

我用MariaDB驱动程序和方言更改了它,但结果是一样的。

2 个答案:

答案 0 :(得分:0)

根据这个post你应该在org.hibernate.dialect.MariaDBDialect中改变你的方言,如果Hibernate版本是> = 5.2.8或你应该使用MySQL5InnoDBDialect

答案 1 :(得分:-2)

changeSet(作者:“sonalpatel(generated)”,id:“1309959832163-2”){     createTable(tableName:“payment”){         column(autoIncrement:“true”,name:“id”,type:“bigint”){constraints(nullable:“false”,primaryKey:“true”,primaryKeyName:“paymentPK”)         }         column(name:“version”,type:“bigint”){             约束(可空:“假”)         }

    column(name: "buyer_id", type: "bigint") {
        constraints(nullable: "false")
    }

    column(name: "buyer_information_id", type: "bigint")

    column(name: "currency", type: "varchar(255)") {
        constraints(nullable: "false")
    }

    column(name: "discount_cart_amount", type: "decimal(19,2)") {
        constraints(nullable: "false")
    }

    column(name: "paypal_transaction_id", type: "varchar(255)")

    column(name: "status", type: "varchar(9)") {
        constraints(nullable: "false")
    }

    column(name: "tax", type: "double precision(19)") {
        constraints(nullable: "false")
    }

    column(name: "transaction_id", type: "varchar(255)")
}

}