Play! framework - database issue with Evolutions

前端 未结 4 964
深忆病人
深忆病人 2021-02-01 09:53

I\'m using Play! framework 2.0 and I\'m stuck on an annoying issue involving the database.

Suppose I have a User (extends Model) class which ha

相关标签:
4条回答
  • 2021-02-01 10:06

    What you are probably doing is applying destructive evolutions. If you look in 1.sql (or whatever your evolutions file is), under DOWNS you have statemtnts like "DROP DATABASE X". Whenever Play detects changes in the evolution file, it runs all the down evolutions, then reapplies the up evolutions, resulting in all your data being lost.

    Here is more info: http://www.playframework.org/documentation/2.0.2/Evolutions

    0 讨论(0)
  • 2021-02-01 10:14

    You could disable Evolutions by setting evolutionplugin=disabled in application.conf

    0 讨论(0)
  • 2021-02-01 10:17

    First you need to disable automatic generation of Evolution files by deleting the first 2 commented lines of the conf/evolutions/default/1.sql:

    # --- Created by Ebean DDL
    # To stop Ebean DDL generation, remove this comment and start using Evolutions
    
    # --- !Ups
    ...
    

    Then, you need to create a second file, called conf/evolutions/default/2.sql containing your update on the database schema with an Ups and a Downs section:

    # --- !Ups
    ALTER TABLE USER ADD COLUMN last_ip varchar(30) DEFAULT NULL;
    
    # --- !Downs
    
    ALTER TABLE USER DELETE COLUMN last_ip;
    
    0 讨论(0)
  • 2021-02-01 10:24

    I suggest you take a look at Liquibase. Liquibase handles database changes, is super flexible and is database independent. I use it in my applications to make sure when I apply a database change things don't get deleted or whatever.

    0 讨论(0)
提交回复
热议问题