我的应用程序是基于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驱动程序和方言更改了它,但结果是一样的。
答案 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)")
}
}