-1

我使用Scala的玩变阵,并有这application.conf斯卡拉玩变阵正在申请复制性

evolutionplugin=enabled 
applyEvolutions.default=true 
applyDownEvolutions.default=true 

我也有一个演变该SQL脚本

ALTER TABLE `User` ADD `Level` INT(10) NOT NULL DEFAULT '1', 

然而,当我开始Play2在PROD模式我总是得到这个错误

Duplicate column name 'Level' [ERROR:1060, SQLSTATE:42S21] 

当我检查数据库之前开始应用程序play_evolutions行在相应的脚本上有“应用”状态,但启动后,它变为“应用程序上”,看起来演变一直在开始。我怎样才能应用“新”演变,而不是从开始就应用每一个演变?现在它的屁股疼痛,因为当我添加新列到表我还需要有“下来”脚本先删除该列和“向上”脚本添加此列,但这也导致该列中的所有数据也下降生产数据库。我是否缺少进化的东西? (对于我来说,“进化”应该只在上一次结束时才会继续)。

谢谢

回答

0

我的猜测是,你可能已经改变已经应用变阵SQL。所以,它可能会进入更改的步骤并自动应用。演化步骤也必须完全相反。否则,你永远无法达到确切的数据库状态。

在生产中,您应该禁用applyDownEvolutions.default=true。否则,如你所说,你可能会丢失数据

+0

我也这么认为,但我清理整个数据库没有表,启动应用程序,停止,并再次启动,然后失败,当我检查新的哈希和旧哈希上相应的演变也是如此。因此,只需重新启动应用程序就不会更改文件,并且失败。 –