播放框架 2.4.3 进化未触发

Posted

技术标签:

【中文标题】播放框架 2.4.3 进化未触发【英文标题】:Play framework 2.4.3 evolutions not triggered 【发布时间】:2015-09-14 09:41:01 【问题描述】:

我正在玩游戏的todo tutorial。当我在conf/evolutions/default/1.sql 中创建进化时,什么都没有发生。我只是得到了 Exception JdbcSQLException: Table "TASK" not found,这是有道理的。

我在激活器控制台中使用h2-browser 将进化手动应用于数据库,然后它就可以工作了。但进化不会自动出现。

应用程序.conf

# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.username=sa
db.default.password=""

# New
evolutionplugin=enabled
applyEvolutions.db=true
applyEvolutions.default=true
applyDownEvolutions.default=true

# Evolutions
# ~~~~~
# You can disable evolutions if needed
# play.evolutions.enabled=false

# You can disable evolutions for a specific datasource if necessary
# play.evolutions.db.default.enabled=false

1.sql

# Tasks schema

# --- !Ups

CREATE SEQUENCE task_id_seq;
CREATE TABLE task (
    id integer NOT NULL DEFAULT nextval('task_id_seq'),
    label varchar(255)
);

# --- !Downs

DROP TABLE task;
DROP SEQUENCE task_id_seq;

【问题讨论】:

【参考方案1】:

好的。我阅读了migration docs 并且必须将libraryDependencies += evolutions 应用于build.sbt。

然后它按预期工作。

这些不是必需的,它们会自动应用进化(不显示Database 'default' needs evolution!):

applyEvolutions.db=true
applyEvolutions.default=true
applyDownEvolutions.default=true

【讨论】:

【参考方案2】:

只是 Play 2 的更新:

play.evolutions.enabled = true
play.evolutions.autoApply=true
play.evolutions.autoApplyDowns=true

【讨论】:

以上是关于播放框架 2.4.3 进化未触发的主要内容,如果未能解决你的问题,请参考以下文章

Play 2.1 框架未检测到进化变化

我将如何在播放框架 2.4.3 (Scala) 中实现拦截器/过滤器

播放框架 - SQLite:启用外键

如何播放特定频率和框架的声音未找到音频单元问题

播放框架异常和数据库未解决

iOS 外部附件框架附件DidConnect 未触发