2017-10-10 47 views
0

我有一个在Ubuntu服务器上使用docker运行的spring-boot应用程序,MYSQL数据库在服务器本身上运行,而不是在docker镜像中。我用于spring-boot应用程序的模式不断得到随机删除,我总是必须使用备份转储进行恢复。我无法确定这个奇怪问题背后的原因。我试着用Google搜索这个问题,但我找不到有关这个问题的任何信息。MYSQL架构不断下降

什么可能导致数据库被丢弃?!?

这是每周一次的随机!可能不止于此。我甚至无法追踪。

我application.yml有这样的:

spring: 
    datasource: 
    url: jdbc:mysql://localhost/schemaname?useSSL=false 
    username: username 
    password: password 
    tomcat: 
     validation-query: SELECT 1 
     test-on-borrow: true 

    jpa: 
    show-sql: true 
    hibernate: 
     ddl-auto: update 
    properties: 
     hibernate: 
     dialect: org.hibernate.dialect.MySQL5Dialect 
+2

你可以搜索你的项目文件的字符串'ddl-auto'和'hbm2ddl'吗? –

+0

为什么码头标签,因为你的mysql没有在docker中运行? – BMitch

+0

@BMitch Docker标记,因为我开始使用Docker时遇到此问题可能是有人遇到了Docker。 – Kareem

回答

1

生产应用程序,你不应该使用ddl-auto

来自Java Persistence with Hibernate的报价。

警告:我们已经看到了Hibernate用户尝试自动使用SchemaUpdate工具来 更新生产数据库的架构。这可能会在灾难中迅速结束,并且不会被DBA允许。

此选项仅用于开发。

如果你不想手动运行你的sql miagrations,你应该考虑像flyway或liquibase这样的工具。

+0

我在生产中关闭了它,现在正在测试它。是的,我在任何地方都能读到,我不应该这样做。 – Kareem