问题标签 [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 投票
1 回答
347 浏览

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 脚本时:

堆栈跟踪:

0 投票
1 回答
784 浏览

playframework - 如何在游戏中禁用进化

我不使用进化,我想禁用它。我已经使用play.evolutions.enabled=false并且它的工作,没有创建进化表,我没有收到消息但是我仍然每次都创建进化文件夹,当我运行服务器时它会创建 evoltuon.default 文件夹,其中包含 1.sql 文件。它没有运行该文件,但我想禁用此文件夹的创建。有什么建议么?

0 投票
1 回答
259 浏览

playframework - 播放框架演变错误

我添加了一些进化文件。现在我得到这个错误:

[错误] padeDefaultEvolutionsApi - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 33 行的 ')' 附近使用正确的语法 [ERROR:1064, SQLSTATE:42000]

当我尝试启动服务器时。所以我删除了文件并重新编译并尝试启动服务器。同样的错误又来了!在我添加这些文件之前它编译得很好。

它从哪里得到错误?

0 投票
2 回答
251 浏览

scala - 有条件的 Scala 演进

我想实现仅在 Scala Play 框架应用程序满足条件时才适用的演变。条件是应用程序应该在一定的环境中。

我现在有这个进化:

如果满足此条件,我希望进化运行

我如何实现这一目标?这是进化的功能还是应用程序逻辑?

0 投票
1 回答
705 浏览

postgresql - 播放 2.6 进化数据库更改未应用

我的项目最近从 Play 2.5 更新到 2.6.13。我添加了一个新脚本 16.sql 但更改未应用于表play_evolutions

根据文档 2.6EvolutionsComponents如果您使用编译时 DI,则必须注入。但是 Guice 是运行时 DI,所以我不应该注入任何组件。

我启用了进化build.sbt

在 application.conf

我的项目缺少什么?欢迎任何 git 示例

0 投票
1 回答
255 浏览

scala - 播放进化未应用于自定义 Slick 环境配置

描述:

你好。我正在为我的应用程序使用Play frameworkand 。所以我设计了 CI_Pipelines并在我的.When我们设置了这样的光滑配置:SlickPostgreSQLapplication.conf

并在代码(dao 文件)中:

一切正常都写如为EVOLUTION我们play提供的那样。
但是,如果您想设置其他环境,例如,staging否则production您将失败:D。
我阅读了Slick您可以从此处阅读的文档,非常适合编写成功的配置文件。所以我这样写:

** 您必须注意的重要一点是,我PostgreSQL在我的(docker 容器)之外,所以我必须远程连接到它。

在代码中我们有:

问题:

问题是现在玩进化不适用。

问题:

我需要知道如何实现其中之一(以解决我的问题):

  1. 如何以之前描述的这种方式应用游戏进化(在问题部分)?
  2. 如何以更好的方式设置我的环境?
0 投票
1 回答
190 浏览

scala - 使用 Play 框架,我在设置路由器时做错了什么

我是 Play 和 Scala(2.6 版)的新手,我不知道如何让路由以简单的方式工作。将 2.6 文档中的示例拼凑在一起,我设法创建了一个自定义应用程序加载器,据我所知,这是执行 Evolutions 迁移所必需的。我发现的示例包括一个 var router = Routes.empty BuiltInComponentsFromContext 似乎需要使用路由器,但是这样做,按照我的做法,我的路由现在被破坏了,现在我得到的只是“Action Not找到”消息。

这是我的application.conf:

这是应用程序加载器

在我看来,它声明:

我基本上使我在我的 conf/routes 文件中声明的任何路由无效,并且我想到使用 Router.load 方法,但我找不到如何传递所需环境和配置的示例方法的值。假设我不想使用静态路由,我该怎么做?

0 投票
0 回答
256 浏览

playframework - Play + Slick + Evolutions 测试建议

我从未对我测试 Play 应用程序的方式感到 100% 满意。我已经确定了一种我已经使用了一段时间的方法,但感觉有点老套,而且我错过了一些简单的东西。

我使用 SQLite 并有一个名为的数据库配置default,我在测试 conf 文件中覆盖了该配置:

应用程序.conf

应用程序.test.conf

从我的测试配置中可以看出,我喜欢使用内存数据库进行测试。我喜欢使用内存数据库进行测试有几个原因

  1. 我发现在 SQL 文件中管理测试数据更容易
  2. 测试完成后自动转储数据库
  3. 移动到另一台开发机器很容易

我有 2 套进化脚本。一组用于存储在下的 dev/prod 数据库evolutions/default/<n>.sql,另一组用于存储在下的测试数据库evolutions/test/<n>.sql

在我的测试中,我使用Injectingtrait 将数据库注入测试套件并运行test演变,如下所示:

[测试名称]Spec.scala

我不喜欢这种方法的事情:

  1. 我将测试数据存储在进化脚本中,它工作得很好,但似乎是错误的。
  2. 我需要维护 2 套进化脚本。
  3. 为了运行测试,我需要一个应用程序,以便我可以注入数据库。这似乎太“沉重”了。

我的方法看起来合理吗?在 Play 中处理测试是否有普遍认可的方法?

0 投票
2 回答
280 浏览

scala - 应该如何处理增量数据库模式演变

我有一个以数据库为持久层的 Play 框架驱动的应用程序(为此我使用 Slick)。我已经启用了进化,生成1.sql了文件并成功地将其推广到生产中。

客户请求需要修改数据库架构的新功能 - 即。添加新表、添加新列以及更改现有列的可空性。

更新所有 Slick 的表定义和相关代码后,我会再次生成模式并将其放置为2.sql. 正确地请求运行演进,但是......生成的演进并不反映在 1.sql 状态之上的增量更新,而是说明如何从头开始创建数据库模式(即 CREATE TABLE 包含所有列,包括新列而不是而不是 ADD COLUMN 原因)。

是否可以实现增量更新,以便我可以轻松地在生产中运行它以获取数据库从修订 #1 到修订 #2(SQL“差异”在 #1 和 #2 之间)还是我必须手动创建这些演变?

0 投票
1 回答
124 浏览

database - 需要提供数据库密码才能在运行时运行进化 - Play + Slick

我需要避免将纯文本密码存储在配置文件中,因此我将 Postgres 密码存储在外部(在 AWS Secrets Manager 中)。

与此处提供的解决方案类似: Play + Slick + HikariCP application 中的加密数据库密码,我已经能够覆盖 dbConfig 并将密码提供给我的 DAO 类,如下所示:

这对于常规的数据库查询非常有用,但是进化绕过了这一点,仍然希望用户名和密码在 application.conf 中,这违背了密码作为秘密的目的。

关于进化如何从函数中获取数据库凭据的任何建议?