我的项目使用。
公司规定,测试环境和生成的环境数据库帐户只具有读写权限。
我发现,当ddl设置为none时,数据库结构也会被更改,因为没有权限导致服务在开始时失败。如何设置ddl-auto属性,使程序不更改数据库,也不进行检查?
spring-data-jpa文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-database-initialization
10.2。使用Hibernate初始化数据库,您可以显式地设置spring.jpa.hibernate.ddl-auto,并且标准Hibernate属性值为none、values、update、create和create。Spring根据它是否认为您的数据库是嵌入式的,为您选择一个默认值。默认情况下,如果没有检测到架构管理器,或者在所有其他情况下都没有。通过查看连接类型检测嵌入式数据库。hsqldb、h2和derby是嵌入的,而其他则不是。在从内存中切换到“真实”数据库时,要小心,不要对新平台中的表和数据的存在做出假设。您必须显式地设置ddl-auto,或者使用其他机制来初始化数据库.。
发布于 2019-10-30 09:30:31
spring.jpa.hibernate.ddl-auto=none
标准Hibernate属性值是:创建、更新、创建-删除、验证和无。
创建- Hibernate首先删除现有表,然后创建新表。
update -基于映射(注释或XML)创建的对象模型与现有模式进行比较,然后Hibernate根据差异更新模式。它从不删除现有的表或列,即使应用程序不再需要这些表或列。
create- drop -类似于create,另外Hibernate将在所有操作完成后删除数据库。通常用于单元测试。
验证- Hibernate只验证表和列是否存在,否则会引发异常。
none -此值有效地关闭了DDL生成
https://stackoverflow.com/questions/58622076
复制相似问题