问题标签 [playframework-evolutions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4904 浏览

playframework-2.0 - 回滚进化

这个问题可能看起来很愚蠢,但我找不到任何关于如何在 Play 2.0 中回滚进化的说明。谷歌只找到说进化文件的“Downs”部分用于此目的的页面,仅此而已。任何指针或说明将不胜感激。

0 投票
2 回答
1334 浏览

database - 在进化王国中以编程方式创建数据库表

想象一个操作大型分层数据集的程序。该程序将每个新的此类数据集存储在专用表中。该表是根据数据集在其中的数据类型创建的。嗯,没有什么不寻常的。这是一个微不足道的情况。但是在进化范式规则的 Play 2.0 中,我该如何进行这种安排呢?我只是无法开始思考它。

更新

事实证明,没有简单的方法。行。圆形的方式。

是否有可能:

1)让程序自己编写进化文件并自动应用它们?会不会对 Play 的理念造成一些扭曲?

2) 在单独的线程中使用另一个数据库系统并且不使用 Play 的固有数据库功能?会不会很痛?

更新 2

我正在阅读 MongoDB Casbah 文档,我非常喜欢它。我打算将它与我的 Play 应用程序一起使用。通过 Casbah 和 Play 使用 MongoDB 有什么相反的证据吗?

0 投票
2 回答
3905 浏览

playframework - 在游戏 2 中重新生成进化脚本

我还在 play 2 上开发我的应用程序的第一个版本。我怎样才能重新生成进化脚本?

0 投票
1 回答
305 浏览

heroku - Play 2 进化应用 blob 和 bytea 进行测试和生产

我在 play 2.0 下创建了一个 bean,evolutions 将为我创建一个 1.sql DDL。

这是包含 blob 类型的实体:

它创建了这个 DDL。

它在本地适用于 H2 db,但不适用于 Heroku Postgres。我怎样才能使进化自动化以创建单独的 DDL?

0 投票
1 回答
873 浏览

scala - 未检测到数据库演变的更改

我目前正在尝试修复一个错误的数据库进化脚本——事实上,我的第一个(1.sql)用于 Web 应用程序。我对文件应用了修复,但未修复的文件是在我的 Specs2 测试的两个实时实例中运行的文件。

因此,例如,如果我更改:

到:

在我的进化脚本中,然后运行测试或运行实际实例,

将是它仍然看到的内容,如测试日志和未正确应用进化时显示的实时实例的错误屏幕中所示。

我已经尝试清理、重新编译和删除我的目标文件夹。这些都没有奏效。有任何想法吗?

谢谢。

0 投票
1 回答
3104 浏览

database - 如何在生产模式下使用数据库演化?

目前,我的进化以两种方式使用(在 Play!2 应用程序中):

  1. 它们用于定义数据库的结构
  2. 它们用于使用一些默认值填充数据库。

Downs 通常会破坏 Ups 所做的任何改变。我没有在 prod 模式下使用进化,但我知道它们是在应用程序启动时应用的。

这是否意味着更新应用程序会导致重新应用进化,从而导致我丢失所有数据?如果是这样,我该如何避免这种情况?

0 投票
1 回答
1662 浏览

scala - 如何手动应用进化并在播放框架 2 上标记为已解决

是否有可能在 playframework 2 中应用标记进化?

场景:我不得不更改已经应用的进化文件,因为它与 H2 不兼容,导致在测试期间无法应用剩余的进化。所以,我修好了。现在应用程序想要重新应用修改后的演变。我只想“标记已解决”而不应用(并避免删除重新创建表。)

0 投票
2 回答
12361 浏览

java - 如何处理生产环境中的 Play Framework 2 数据库演变

似乎每当我更改模型时,Play Framework 都会要求我运行一个脚本来删除我的整个架构并重新创建它。显然这不适用于生产,那么在生产中处理这个问题的正确方法是什么?

请注意,我使用的是 ebean 和 Postgres,并托管在 heroku 上。

0 投票
1 回答
2227 浏览

postgresql - 如何使用 Play 框架中的演变在 PostgreSQL 中创建函数?

使用 Play 框架 2.1

我在进化过程中定义了以下 SQL:

当我执行进化时,我收到以下错误:

我正在使用 PostgreSQL 驱动程序版本 9.1-901.jdbc4。

我查看了 postgres 查询日志,发现 Play 正在尝试执行以下操作:

因此,出于某种原因,Play 试图将 SQL 插入文本列而没有正确转义。有没有其他人找到解决这个问题的方法?您认为这是 JDBC 问题而不是 Play 问题吗?另外,有没有人让 Liquibase 与 Play 2.1 一起工作?

此外,仅将 $$ 更改为 ' 也不起作用。在这种情况下,我们会得到一个不同的错误,但我们仍然无法执行进化。

编辑:我添加了一个来自全新游戏项目的示例。请在以下网址下载:http ://elijah.zupancic.name/files/play_evolution_problem.tar.gz

要使示例正常工作,您需要创建一个新数据库,如进化 1.sql 的第一条评论所示。然后你需要配置你的 conf/application.conf 以在正确的端口和正确的用户上连接到 postgres。

我刚刚做了一个实验,我尝试将创建函数 sql 完全插入到播放框架之外。示例在这里:http ://elijah.zupancic.name/files/PgCreateFunction.tar.gz <

事实证明,它是非常可重复的。

编辑:事实证明我无法在 Java 中重现它。

0 投票
2 回答
1425 浏览

java - 具有枚举字段类型的 Ebean 模型意外生成的进化脚本

我仍在使用 Play Framework 学习 Ebean ORM。Play!Framework 生成的意外进化脚本有问题。我正在使用Play!Framework 2.1.1和 JDK 1.7 更新 5 64 位。对不起,这个问题中的长代码片段。

我有两个 Ebean 模型,如下所示:

Course.java

CourseInterest.java

这是从上面的模型生成的进化脚本:

我对生成的进化脚本的期望是:

  1. castillo_courses CREATE TABLE脚本中,ck_castillo_courses_course_type约束应该按照属性(1,2,3,4)的定义签入,而不是签入。我怀疑进化是通过使用我的枚举值生成的。CourseType.value(0,1,2,3)ORDINAL

  2. castillo_course_interest CREATE TABLE脚本中,它再次定义castillo_coursescode. 我希望脚本定义注释定义course_code的列。@JoinColumn这里还有另一个问题。它也没有生成主键约束的脚本,因为我@Id在模型中定义了两个。

我感谢任何可以解释、提供建议或帮助我解决这个问题的人.. :)

亲切的问候。