grails - Grails hbm2ddl.SchemaUpdate错误失败

标签 grails hbm2ddl

当我运行我的grails应用程序时,我收到schemaUpdate失败错误;

    hbm2ddl.SchemaUpdate Unsuccessful: alter table lifecycle add index FKEDFAE76ABF1565B0 (round_up_emailed_updated_by_id), add constraint FKEDFAE76ABF1565B0 foreign
    key (round_up_emailed_updated_by_id) references user (id)
    hbm2ddl.SchemaUpdate Too many keys specified; max 64 keys allowed
    hbm2ddl.SchemaUpdate Unsuccessful: alter table lifecycle add index FKEDFAE76A166A0DC5 (training_advice_telecommunicated_updated_by_id), add constraint FKEDFAE76A1
    66A0DC5 foreign key (training_advice_telecommunicated_updated_by_id) references user (id)
    hbm2ddl.SchemaUpdate Too many keys specified; max 64 keys allowed
    hbm2ddl.SchemaUpdate Unsuccessful: alter table lifecycle add index FKEDFAE76AA40386D9 (laptops_arranged_actor_id), add constraint FKEDFAE76AA40386D9 foreign key (
    laptops_arranged_actor_id) references role (id)
    hbm2ddl.SchemaUpdate Too many keys specified; max 64 keys allowed

这是什么意思?是什么导致此错误?

最佳答案

尽管您没有发布数据库引擎和版本,但是我猜测您使用的是MySQL 5.0或更高版本。

我使用MySQL 5.5.25和InnoDB作为引擎,并遇到以下发现:

从MySQL 5.0开始,每个表最多有64个索引。

有人尝试使用MySQL 5.0创建一个包含64个以上外键的表,并在错误消息中获得了您得到的确切文本:

Too many keys specified. Max 64 keys allowed

这是他们关于bugs.mysql.com Bug #51450的错误报告。

如果您运行的是MySQL 5.0或更高版本,而这是您遇到的错误,那么Grails或hbm2ddl并不是问题,而是底层数据库引擎的问题。

关于grails - Grails hbm2ddl.SchemaUpdate错误失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12084868/

相关文章:

spring - Grails,将文件上传大小限制为几兆字节

grails - 在Grails/spring security中收集/定义最后访问的信息的最佳方法是什么?

java - Hibernate: hibernate.hbm2ddl.auto=update 显示生成的sql

java - 有没有办法让 Hibernate 的 hbm2ddl Ant 任务排除特定的表?

java - 如何使 hbm2ddl schemaExport 将模式记录到标准输出?

mysql - 告诉 Hibernate 的 hbm2ddl 为 @Enumerated 注释字段添加 MySQL 枚举列

hibernate - 序列问题为什么在使用 hbm2ddl 生成架构时两个实体共享相同的序列?

当注入(inject)的服务具有较旧的 Grails 版本时,Grails 服务注入(inject) null

grails - 如何将 Controller 中的GSP模板引擎与Grails中的域连接起来?

grails - 如何在Grails 3.0中使用Grails 2.4.4的脚手架模板