【问题标题】:MYSQL schema keeps getting droppedMYSQL 模式不断被丢弃
【发布时间】:2018-03-22 07:20:05
【问题描述】:

我在 Ubuntu 服务器上使用 docker 运行了一个 spring-boot 应用程序,MYSQL DB 在服务器本身上运行,而不是在 docker 映像中。我用于 spring-boot 应用程序的架构不断被随机删除,我总是必须使用备份转储来恢复它。我无法确定这个奇怪问题背后的原因。我尝试用谷歌搜索这个问题,但找不到任何关于这个问题的信息。

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

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

我的 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

【问题讨论】:

  • 你能在你的项目文件中搜索字符串ddl-auto和hbm2ddl吗?
  • 为什么 docker 标签,因为你的 mysql 没有在 docker 中运行?
  • @BMitch Docker 标签,因为我在开始使用 Docker 时就开始遇到这个问题,可能有人遇到过这个问题。
  • @RandallFlagg 正如您从我的 application.yml 中看到的那样,我使用 ddl-auto: update。每当进行任何更改时都会更新表。我在任何地方都没有 hbm2ddl。

标签: java mysql hibernate spring-boot database-schema


【解决方案1】:

您不应将ddl-auto 用于生产应用程序。

引用Java Persistence with Hibernate。

警告:我们已经看到 Hibernate 用户尝试使用 SchemaUpdate 自动更新生产数据库的模式。这个可以 很快就会以灾难告终,您的 DBA 不允许这样做。

此选项仅用于开发。

如果您不想手动运行 SQL 迁移,则应考虑使用 flyway 或 liquibase 等工具。

【讨论】:

  • 我在生产中关闭了它,我现在正在测试它。是的,我在任何地方都读到了我不应该在产品上这样做的地方。
猜你喜欢
  • 2015-05-23
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
相关资源
最近更新 更多