今天在测试自己的项目启动Tomcat的时候报出了一个异常,
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table cst_customer add constraint FKeh5g36duab8g1h051pdjfwcgd foreign key (cust_source) references base_dict (dict_id)]
然后经过多次调试之后都无法解决,上网找的方法都试过了都不能解决,
我在Hibernate中的映射文件配置多对一是这样的,但是这并没有什么问题
<many-to-one name="cust_source" column="cust_source" class="BaseDict" ></many-to-one>
然后无可奈何,我开始检查数据库,突然发现,数据库中有一条数据是这样子的:
然后联想到这个异常是外键创建失败异常并且我的base_dict表中并没有主键值为test的列(这样子的话设置cust_source为base_dict(dict_id)的外键当然是会报错的啊)
那么解决方法有两个(类比解决,按照自己的实际情况选择解决方案):
1.删除错误的行
2.在base_dict表中创建主键值为test的行
至此,问题解决,在此建议在报创建外键异常时可以先检查数据库表中是否存在非法数据。