可能重复:
Grails:更改hibernate方言时SQL语法错误
我在mySQL数据库中使用Grails,并尝试更改数据库引擎。据我所研究,可以做到最好
dialect = "org.hibernate.dialect.[MyDialect]"
在DataSource.groovy配置中。但是,当我将方言设置为org.hibernate.dialect.MySQLMyISAMDialect时,我的表的创建失败,并出现错误:
您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法在第1行的"type=MyISAM"附近
我后来也试着用来改变表格
sql.execute("ALTER TABLE book ENGINE=MYISAM;")
这实际上是有效的,但在创建后更改引擎时,表的所有外键都会被删除。
我应该如何避免错误并正常更换发动机?
pav,
我正在运行MySQL 5.5.25、Grails 2.1.0和Grails hibernate-2.1.0插件,该插件使用hibernate内核3.6.10.FINAL。
这可能是Grails版本(更具体地说,Grails正在使用的Hibernate底层版本)和MySQL版本的问题。
以下是Hibernate JIRA上报告的一个错误:HHH-5988。
我使用InnoDB作为我的引擎,我尝试在MyISAM中进行交换,如下所示:在我的DataSource.groovy
:中
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错误的一条评论是,一位用户正在为MySQL 5 MyISAM创建自己的自定义方言。