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

Nim*_*sky 10 java mysql hibernate

我正在使用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
Run Code Online (Sandbox Code Playgroud)

它似乎试图在创建表之前改变它.表和FK已成功创建.是什么导致错误消息?

Ral*_*lph 4

问题是:

  • 如果您有两个表 A 和 B,并且 A 中的外键引用引用了 B。
  • 并且您想要删除表

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

因此,您通常首先删除所有约束,然后删除表。

如果一个表不存在(因为它是新的),则drop table if exists仅当该表存在时,您才可以使用 But 不幸的是 my-sql as no 语句来删除 forainkey 。所以这更多的是缺乏功能而不是错误。


我解决了,但我的设置不同。我仅在验证模式下使用 hibernate 并运行脚本来手动更新数据库。这些脚本是由 hibernate 生成的org.hibernate.tool.hbm2ddl.SchemaExport。然后我将生成的文件添加set foreign_key_checks = 0;到开头和set foreign_key_checks = 1;结尾。然后我注释掉了(添加--在开头添加)与模式匹配的每一行alter table *. drop foreign key *.;

@有关更多详细信息,请参阅/sf/answers/2382691321/