当我运行我的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
这是什么意思?什么原因造成这个错误?
答案 0 :(得分:2)
虽然您没有发布数据库引擎和版本,但我猜测您使用的是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的问题,而是您的底层数据库引擎。
答案 1 :(得分:1)
显然你指定了太多的外键;显然最多允许64个密钥。