问题标签 [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.
postgresql - 无法在 Play 框架演变中执行创建 postgres 功能
我想通过 play framework evolution 脚本为 Postgres DB 创建以下触发器,如果我在 sql ID-e 工具中运行它,它可以正常工作,但是当我尝试通过 play 应用程序中的 evolution/migration 脚本运行它时,它返回一个错误:
错误:
e 收到以下错误:错误:未终止的美元引号字符串在“$BODY$ BEGIN IF NEW.status <> OLD.status and NEW.status = 'FT' THEN update "match" set processed = true” 位置或附近: 64 [ERROR:0, SQLSTATE:42601],尝试运行此 SQL 脚本时:
堆栈跟踪:
playframework - 如何在游戏中禁用进化
我不使用进化,我想禁用它。我已经使用play.evolutions.enabled=false
并且它的工作,没有创建进化表,我没有收到消息但是我仍然每次都创建进化文件夹,当我运行服务器时它会创建 evoltuon.default 文件夹,其中包含 1.sql 文件。它没有运行该文件,但我想禁用此文件夹的创建。有什么建议么?
playframework - 播放框架演变错误
我添加了一些进化文件。现在我得到这个错误:
[错误] padeDefaultEvolutionsApi - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 33 行的 ')' 附近使用正确的语法 [ERROR:1064, SQLSTATE:42000]
当我尝试启动服务器时。所以我删除了文件并重新编译并尝试启动服务器。同样的错误又来了!在我添加这些文件之前它编译得很好。
它从哪里得到错误?
scala - 有条件的 Scala 演进
我想实现仅在 Scala Play 框架应用程序满足条件时才适用的演变。条件是应用程序应该在一定的环境中。
我现在有这个进化:
如果满足此条件,我希望进化运行
我如何实现这一目标?这是进化的功能还是应用程序逻辑?
postgresql - 播放 2.6 进化数据库更改未应用
我的项目最近从 Play 2.5 更新到 2.6.13。我添加了一个新脚本 16.sql 但更改未应用于表play_evolutions
根据文档 2.6,EvolutionsComponents
如果您使用编译时 DI,则必须注入。但是 Guice 是运行时 DI,所以我不应该注入任何组件。
我启用了进化build.sbt
在 application.conf
我的项目缺少什么?欢迎任何 git 示例
scala - 播放进化未应用于自定义 Slick 环境配置
描述:
你好。我正在为我的应用程序使用Play framework
and 。所以我设计了 CI_Pipelines并在我的.When我们设置了这样的光滑配置:Slick
PostgreSQL
application.conf
并在代码(dao 文件)中:
一切正常都写如为EVOLUTION
我们play
提供的那样。
但是,如果您想设置其他环境,例如,staging
否则production
您将失败:D。
我阅读了Slick
您可以从此处阅读的文档,非常适合编写成功的配置文件。所以我这样写:
** 您必须注意的重要一点是,我PostgreSQL
在我的(docker 容器)之外,所以我必须远程连接到它。
在代码中我们有:
问题:
问题是现在玩进化不适用。
问题:
我需要知道如何实现其中之一(以解决我的问题):
- 如何以之前描述的这种方式应用游戏进化(在问题部分)?
- 如何以更好的方式设置我的环境?
scala - 使用 Play 框架,我在设置路由器时做错了什么
我是 Play 和 Scala(2.6 版)的新手,我不知道如何让路由以简单的方式工作。将 2.6 文档中的示例拼凑在一起,我设法创建了一个自定义应用程序加载器,据我所知,这是执行 Evolutions 迁移所必需的。我发现的示例包括一个 var router = Routes.empty BuiltInComponentsFromContext 似乎需要使用路由器,但是这样做,按照我的做法,我的路由现在被破坏了,现在我得到的只是“Action Not找到”消息。
这是我的application.conf:
这是应用程序加载器
在我看来,它声明:
我基本上使我在我的 conf/routes 文件中声明的任何路由无效,并且我想到使用 Router.load 方法,但我找不到如何传递所需环境和配置的示例方法的值。假设我不想使用静态路由,我该怎么做?
playframework - Play + Slick + Evolutions 测试建议
我从未对我测试 Play 应用程序的方式感到 100% 满意。我已经确定了一种我已经使用了一段时间的方法,但感觉有点老套,而且我错过了一些简单的东西。
我使用 SQLite 并有一个名为的数据库配置default
,我在测试 conf 文件中覆盖了该配置:
应用程序.conf
应用程序.test.conf
从我的测试配置中可以看出,我喜欢使用内存数据库进行测试。我喜欢使用内存数据库进行测试有几个原因
- 我发现在 SQL 文件中管理测试数据更容易
- 测试完成后自动转储数据库
- 移动到另一台开发机器很容易
我有 2 套进化脚本。一组用于存储在下的 dev/prod 数据库evolutions/default/<n>.sql
,另一组用于存储在下的测试数据库evolutions/test/<n>.sql
。
在我的测试中,我使用Injecting
trait 将数据库注入测试套件并运行test
演变,如下所示:
[测试名称]Spec.scala
我不喜欢这种方法的事情:
- 我将测试数据存储在进化脚本中,它工作得很好,但似乎是错误的。
- 我需要维护 2 套进化脚本。
- 为了运行测试,我需要一个应用程序,以便我可以注入数据库。这似乎太“沉重”了。
我的方法看起来合理吗?在 Play 中处理测试是否有普遍认可的方法?
scala - 应该如何处理增量数据库模式演变
我有一个以数据库为持久层的 Play 框架驱动的应用程序(为此我使用 Slick)。我已经启用了进化,生成1.sql
了文件并成功地将其推广到生产中。
客户请求需要修改数据库架构的新功能 - 即。添加新表、添加新列以及更改现有列的可空性。
更新所有 Slick 的表定义和相关代码后,我会再次生成模式并将其放置为2.sql
. 正确地请求运行演进,但是......生成的演进并不反映在 1.sql 状态之上的增量更新,而是说明如何从头开始创建数据库模式(即 CREATE TABLE 包含所有列,包括新列而不是而不是 ADD COLUMN 原因)。
是否可以实现增量更新,以便我可以轻松地在生产中运行它以获取数据库从修订 #1 到修订 #2(SQL“差异”在 #1 和 #2 之间)还是我必须手动创建这些演变?
database - 需要提供数据库密码才能在运行时运行进化 - Play + Slick
我需要避免将纯文本密码存储在配置文件中,因此我将 Postgres 密码存储在外部(在 AWS Secrets Manager 中)。
与此处提供的解决方案类似: Play + Slick + HikariCP application 中的加密数据库密码,我已经能够覆盖 dbConfig 并将密码提供给我的 DAO 类,如下所示:
这对于常规的数据库查询非常有用,但是进化绕过了这一点,仍然希望用户名和密码在 application.conf 中,这违背了密码作为秘密的目的。
关于进化如何从函数中获取数据库凭据的任何建议?