gpt4 book ai didi

java - hibernate 和 mysql 带有 create-drop 选项,控制台输出显示错误...但 ddl 执行正常;可能的错误?

转载 作者:IT王子 更新时间:2023-10-29 00:35:46 26 4
gpt4 key购买 nike

我正在使用 create-drop 选项进行开发,在部署到 mysql 数据库时(使用 hibernate 4)我得到以下输出:

15:18:07,715 ERROR SchemaExport:426 - HHH000389: Unsuccessful: alter table my_table drop foreign key FKD42DEFE312AC02F1
15:18:07,715 ERROR SchemaExport:427 - Table 'my_db.my_table' doesn't exist

它似乎试图在创建表格之前更改表格。表和 FK 创建成功。导致错误消息的原因是什么?

最佳答案

问题是:

  • 如果您有两个表 A 和 B 以及 A 中引用 B 的外键引用。
  • 并且您想删除表格

您需要先删除外键约束。 (除非你知道正确的序列并且没有循环依赖)

所以你通常先删除所有约束,然后删除表格。

如果一个表不存在(因为它是新表),那么您使用 drop table if exists 但不幸的是 my-sql 没有语句仅在表存在时删除 forainkey。因此,与其说是错误,不如说是缺乏功能。


我解决了,但我的设置不同。我仅在验证模式下使用 hibernate 并运行脚本手动更新数据库。脚本由 hibernate org.hibernate.tool.hbm2ddl.SchemaExport 生成。然后我取生成的文件,在开头添加 set foreign_key_checks = 0; 并在末尾添加 set foreign_key_checks = 1;。然后我注释掉(在开头添加 -- )与模式 alter table *.删除外键 *.;

@见 https://stackoverflow.com/a/34038447/280244了解更多

关于java - hibernate 和 mysql 带有 create-drop 选项,控制台输出显示错误...但 ddl 执行正常;可能的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com