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已成功创建.是什么导致错误消息?
问题是:
您需要先删除外键约束。(除非你知道正确的顺序并且没有循环依赖)
因此,您通常首先删除所有约束,然后删除表。
如果一个表不存在(因为它是新的),则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/
归档时间: |
|
查看次数: |
7882 次 |
最近记录: |