问题标签 [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.
playframework-2.0 - 回滚进化
这个问题可能看起来很愚蠢,但我找不到任何关于如何在 Play 2.0 中回滚进化的说明。谷歌只找到说进化文件的“Downs”部分用于此目的的页面,仅此而已。任何指针或说明将不胜感激。
database - 在进化王国中以编程方式创建数据库表
想象一个操作大型分层数据集的程序。该程序将每个新的此类数据集存储在专用表中。该表是根据数据集在其中的数据类型创建的。嗯,没有什么不寻常的。这是一个微不足道的情况。但是在进化范式规则的 Play 2.0 中,我该如何进行这种安排呢?我只是无法开始思考它。
更新
事实证明,没有简单的方法。行。圆形的方式。
是否有可能:
1)让程序自己编写进化文件并自动应用它们?会不会对 Play 的理念造成一些扭曲?
2) 在单独的线程中使用另一个数据库系统并且不使用 Play 的固有数据库功能?会不会很痛?
更新 2
我正在阅读 MongoDB Casbah 文档,我非常喜欢它。我打算将它与我的 Play 应用程序一起使用。通过 Casbah 和 Play 使用 MongoDB 有什么相反的证据吗?
playframework - 在游戏 2 中重新生成进化脚本
我还在 play 2 上开发我的应用程序的第一个版本。我怎样才能重新生成进化脚本?
heroku - Play 2 进化应用 blob 和 bytea 进行测试和生产
我在 play 2.0 下创建了一个 bean,evolutions 将为我创建一个 1.sql DDL。
这是包含 blob 类型的实体:
它创建了这个 DDL。
它在本地适用于 H2 db,但不适用于 Heroku Postgres。我怎样才能使进化自动化以创建单独的 DDL?
scala - 未检测到数据库演变的更改
我目前正在尝试修复一个错误的数据库进化脚本——事实上,我的第一个(1.sql)用于 Web 应用程序。我对文件应用了修复,但未修复的文件是在我的 Specs2 测试的两个实时实例中运行的文件。
因此,例如,如果我更改:
到:
在我的进化脚本中,然后运行测试或运行实际实例,
将是它仍然看到的内容,如测试日志和未正确应用进化时显示的实时实例的错误屏幕中所示。
我已经尝试清理、重新编译和删除我的目标文件夹。这些都没有奏效。有任何想法吗?
谢谢。
database - 如何在生产模式下使用数据库演化?
目前,我的进化以两种方式使用(在 Play!2 应用程序中):
- 它们用于定义数据库的结构
- 它们用于使用一些默认值填充数据库。
Downs 通常会破坏 Ups 所做的任何改变。我没有在 prod 模式下使用进化,但我知道它们是在应用程序启动时应用的。
这是否意味着更新应用程序会导致重新应用进化,从而导致我丢失所有数据?如果是这样,我该如何避免这种情况?
scala - 如何手动应用进化并在播放框架 2 上标记为已解决
是否有可能在 playframework 2 中应用标记进化?
场景:我不得不更改已经应用的进化文件,因为它与 H2 不兼容,导致在测试期间无法应用剩余的进化。所以,我修好了。现在应用程序想要重新应用修改后的演变。我只想“标记已解决”而不应用(并避免删除重新创建表。)
java - 如何处理生产环境中的 Play Framework 2 数据库演变
似乎每当我更改模型时,Play Framework 都会要求我运行一个脚本来删除我的整个架构并重新创建它。显然这不适用于生产,那么在生产中处理这个问题的正确方法是什么?
请注意,我使用的是 ebean 和 Postgres,并托管在 heroku 上。
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 中重现它。
java - 具有枚举字段类型的 Ebean 模型意外生成的进化脚本
我仍在使用 Play Framework 学习 Ebean ORM。Play!Framework 生成的意外进化脚本有问题。我正在使用Play!Framework 2.1.1和 JDK 1.7 更新 5 64 位。对不起,这个问题中的长代码片段。
我有两个 Ebean 模型,如下所示:
Course.java
CourseInterest.java
这是从上面的模型生成的进化脚本:
我对生成的进化脚本的期望是:
在
castillo_courses
CREATE TABLE
脚本中,ck_castillo_courses_course_type
约束应该按照属性(1,2,3,4)
的定义签入,而不是签入。我怀疑进化是通过使用我的枚举值生成的。CourseType.value
(0,1,2,3)
ORDINAL
在
castillo_course_interest
CREATE TABLE
脚本中,它再次定义castillo_courses
除code
. 我希望脚本仅定义注释定义course_code
的列。@JoinColumn
这里还有另一个问题。它也没有生成主键约束的脚本,因为我@Id
在模型中定义了两个。
我感谢任何可以解释、提供建议或帮助我解决这个问题的人.. :)
亲切的问候。