有没有办法在不删除表的情况下将列属性从unique=true更改为unique=false?现在我陷入了这样一种情况,即表已经在前面创建,并且这些表也包含数据。当我将unique=true更改为unique=false时,表中没有任何更改。
unique=true
unique=false
ymdaylpp1#
在数据库中可以很容易地做到这一点,假设我有一个Person表,其中Person_name有一个唯一约束。
ALTER TABLE Person DROP INDEX Person_name; or ALTER TABLE Persons DROP CONSTRAINT Person_name;
如果您尝试使用hib实现同样的操作,hib将尝试删除并再次创建表,这是您不希望发生的。
7dl7o3gd2#
嗯......我不知道您是否允许自己删除数据库,但您可以尝试在应用程序属性文件中用途:
spring.jpa.hibernate.ddl-auto=update
或
spring.jpa.hibernate.ddl-auto=create-drop
更多信息:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html此外,如果您知道数据库模式将有很多更改,并且希望使其易于工作,则应该熟悉https://www.liquibase.org/
ogq8wdun3#
Hibernate不会更新以实现表上的约束,因为现有表可能存在不一致性,因此可能会出错。
3条答案
按热度按时间ymdaylpp1#
在数据库中可以很容易地做到这一点,假设我有一个Person表,其中Person_name有一个唯一约束。
如果您尝试使用hib实现同样的操作,hib将尝试删除并再次创建表,这是您不希望发生的。
7dl7o3gd2#
嗯......我不知道您是否允许自己删除数据库,但您可以尝试在应用程序属性文件中用途:
或
更多信息:
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html
此外,如果您知道数据库模式将有很多更改,并且希望使其易于工作,则应该熟悉https://www.liquibase.org/
ogq8wdun3#
Hibernate不会更新以实现表上的约束,因为现有表可能存在不一致性,因此可能会出错。