可能重复:
Grails: error in SQL syntax when changing the hibernate dialect
我正在使用Grails和mySQL数据库,我正在尝试更改数据库引擎。据我所研究,这可以用
做得最好 dialect = "org.hibernate.dialect.[MyDialect]"
DataSource.groovy配置中的。但是当我将方言设置为org.hibernate.dialect.MySQLMyISAMDialect时,我的表的创建失败并显示错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行'type = MyISAM'附近
我还试图稍后改变表:
sql.execute(“ALTER TABLE book ENGINE = MYISAM;”)
这实际上有效,但在创建后更改引擎时,所有外键都会被删除。
我应该如何避免错误并正常更换发动机?
答案 0 :(得分:1)
pav,
我正在运行MySQL 5.5.25,Grails 2.1.0和grails hibernate-2.1.0插件,它使用了hibernate-core 3.6.10.FINAL。
这可能是您的Grails版本(更确切地说是Grails正在使用的Hibernate的基础版本)和您的MySQL版本的问题。
以下是Hibernate JIRA: HHH-5988报告的错误。
我使用InnoDB作为我的引擎,我尝试在My DataSource.groovy
中按照以下方式交换MyISAM:
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
// dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
dialect = "org.hibernate.dialect.MySQLMyISAMDialect"
username = "study"
password = "********"
}
我也在创建表时遇到错误。
以下是我得到的一个错误的示例,它对应于Hibernate JIRA上报告的错误:
| Error 2012-08-22 13:15:12,739 [pool-4-thread-1] ERROR hbm2ddl.SchemaExport
- Unsuccessful: create table user (id bigint not null auto_increment,
version bigint not null,
login varchar(255) not null unique,
password varchar(255) not null,
role varchar(5) not null,
primary key (id)) type=MyISAM
对上述Hibernate JIRA错误的评论之一是创建自己的custom dialect for MySQL 5 MyISAM的用户。