【问题标题】:"CreateTable" on MariaDB using Grails使用 Grails 在 MariaDB 上“创建表”
【发布时间】:2017-06-29 11:32:50
【问题描述】:

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

您的 SQL 语法有误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“type=InnoDB”附近使用的正确语法

Grails 在语句末尾创建 TYPE=INNODB 的表。我发现用 ENGINE=InnoDB 代替 TYPE=INNODB 可以解决这个问题。我在数据库上手动运行了创建表 SQL,它工作正常。但是,我不知道如何让 Grails 使用 ENGINE=INNODB Vs Type=INNODB。

仅供参考。我的应用程序使用 MySQL5InnoDBDialect 和以下驱动程序。

mysql:mysql-connector-java:5.1.32

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

【问题讨论】:

  • @Burt Beckwith,感谢您编辑我的问题。
  • TYPE= 在经过多年的警告后于 2010 年的 5.5.3 中被删除。 Grails 有多古老?
  • 我正在使用 Grails 2.4.4
  • 在 Jira 中针对 Grails 提交错误。或者看看升级到 3.x 是否会有所帮助。或者可能是更新的连接器。

标签: grails mariadb


【解决方案1】:

根据post,如果 Hibernate 版本 >= 5.2.8,您应该在 org.hibernate.dialect.MariaDBDialect 中更改您的方言,或者您应该使用 MySQL5InnoDBDialect

【讨论】:

  • 很抱歉,但这并没有解决问题。似乎使用正确的方言是解决方案,但我不知道它是什么。另外,我不知道还有什么我应该看的?
  • 我使用的是 Grails 版本 2.4.4。改变方言解决问题是完全有道理的。仔细一看,我发现源代码有几个数据源,并不是所有的都是 MySQL5InnoDBDialect。有些是 MySQLInnoDBDialect。将所有数据源更新为 MySQL5InnoDBDialect 后,问题解决。 @Luca Farsetti,谢谢!
【解决方案2】:

changeSet(作者:“sonalpatel(生成)”,id:“1309959832163-2”){ createTable(tableName: "payment") { 列(autoIncrement:“true”,名称:“id”,类型:“bigint”){约束(可为空:“false”,primaryKey:“true”,primaryKeyName:“paymentPK”) } 列(名称:“版本”,类型:“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)")
}

}

【讨论】:

  • 对不起。我不明白这个。你能根据我的问题解释一下吗?
猜你喜欢
  • 2017-08-29
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2016-03-22
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
相关资源
最近更新 更多