问题标签 [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 回答
1361 浏览

playframework-2.0 - Play 2.1 框架未检测到进化变化

在将 @ManyToMany 连接表添加到两个模型(在本例中为 User 和 Article 模型[1])时,Play 正确检测到这些更改并相应地修改 1.sql[2] 文件:

但是,当打开使用此关系的页面时,不会显示有关需要应用 Evolutions 的消息,而是显示以下错误:

为什么 Play 没有检测到它对需要应用的数据库模式进行了更改?

0 投票
0 回答
532 浏览

playframework - Play Framework with PostgreSQL backend:不兼容的生成进化模式

我目前正在与其他几个人一起开发 Play 框架项目。我们目前处于开发阶段,但我们也希望在服务器上提供自动开发构建。为了在生产机器上进行测试,我们正在使用运行良好的内存数据库。但是对于服务器上的开发构建,我们希望使用 PostgreSQL 作为数据库后端。

到目前为止,一切都很好。EBeans 生成了 1.sql 文件,SET REFERENTIAL_INTEGRITY FALSE;它与 PostgreSQL兼容。所以我的问题是:如何自动让 Play 在内存 DB 和 Postgres 中生成有效 SQL?

我不需要同时运行两者。我想运行一个用于本地开发的数据库和一个用于生产的数据库。

提前致谢。

0 投票
1 回答
249 浏览

hibernate - 在游戏中进行进化的正确方法

我目前正在开发一个播放应用程序,作为我正在开发的移动应用程序的后端 API。

到目前为止,我已将 jpa.ddl 设置为更新,并且一切正常。当我向其中一个模型添加一个新字段时,它会为我更改数据库。

但是,我正在为生产做准备,我读过的所有内容,包括播放文档都说要关闭该功能并改为使用进化。但是,在编写 1.sql 文件时,我遇到了几个问题:

  • 我将数组作为模型的一部分,但我不确定它们在数据库中的表示方式
  • 模型的一部分是其他模型的实例,我不确定对象在数据库中的表示方式

到目前为止,我不必担心数据库是如何实际构建的,因为 Play/JPA/Hibernate 提供了一定程度的抽象。但是现在看来我需要自己手动创建表,我找不到任何文档来正确地执行此操作。

我是否需要手动编写 SQL 来为我的模型创建表,如果需要,我如何在数据库中表示这些表?

编辑:我正在使用 play 1.2.4

0 投票
2 回答
236 浏览

heroku - Heroku 如何在多个 Web 服务器上只运行一次 Evolutions?

Evolutions 是数据库模式升级的默认播放机制。

如果我将播放版本推送到包含多个 Web 服务器的 Heroku 设置 - heroku 怎么知道只运行一次进化?

事实上 - 一个更一般(相关?)的问题 - 如果我将版本推送到具有 N 个 Web 服务器的设置,启动顺序是什么?Heroku 是否一次启动一个?

0 投票
1 回答
176 浏览

sql - 如何扩展 Play2 Evolution

我最近开始在一个项目中使用 Play2,并阅读了关于evolutions的部分。1.sql虽然如果我的项目有 1 个表,他们引用的示例似乎很好,但如果我有 10-20 个表,然后对它们进行更改拆分,则似乎会非常混乱2.sql3.sql依此类推。

在 Ruby on Rails、Symfony 等中,您可以定义每个实体的上/下迁移。

我的问题是,在 Play2 中设置进化的最佳方式是什么?我应该把所有的桌子都放进去1.sql,然后再对它们做些小改动2.sql等等吗?或者有没有办法.sql为每个表创建一个单独的文件?

此外,是否有任何大型开源 Play2 项目的示例,我可以看到它的外观?

0 投票
2 回答
5879 浏览

java - Play Framework 2.1.1 部署问题

因此,我正在尝试部署我非常简单的 Play Framework 2.1.1 应用程序,但是每当我通过命令行传递标志以进行端口并应用数据库演变时,它们都会被忽略。

例如:

sudo play start -Dhttp.port=80 -DapplyEvolutions.default=true

使用此命令,服务器将不会启动。port 和 applyEvolutions=true 标志都被完全忽略,它会抛出这个错误:

[警告] 播放 - 您的生产数据库 [默认] 需要进化![警告] 播放 - 如果你想自动运行它们,请使用 -DapplyEvolutions.default=true 运行(小心)糟糕,无法启动服务器。@6elhl9mca:数据库“默认”需要进化!

我已经尝试了我能想到的一切都无济于事。在我的本地机器上使用 Play Run 可以正常工作,没有问题。服务器正在运行 Ubuntu 12.04。所有正确的驱动程序和连接字符串都存在并经过测试,数据库正在运行,除了 Play Framework 之外,一切都正常工作。

0 投票
1 回答
3844 浏览

playframework - 播放框架:用户缺少权限或找不到对象:PLAY_EVOLUTIONS

我正在使用 Play Framework,在将模型添加到应用程序后出现以下错误:

我的配置:

我只有一张表(Users)的进化,我也有一个模型(User)。我的申请有什么问题?

ADD我发现Users在我引入User模型后我的表没有创建

我的进化(1.sql):

添加我已经创建了没有模型的新应用程序并出现以下错误

我的应用程序的配置:

PS:我已经分享了我的资源:https ://github.com/skayred/play-hsqldb-test

0 投票
1 回答
207 浏览

playframework - 巩固游戏进化

因为我一直在准备我的剧本!用于生产的应用程序并开始回填数据库,我对模型进行了相当多的修改。我现在在我的进化脚本中达到了 8.sql,我想知道是否有办法整合这些脚本并从 1.sql 重新开始。

我可以重写 1.sql 来为我当前的模式建模并删除 2-8 吗?或者这会导致 Play 崩溃吗?

这并不是什么大不了的事,因为我不相信你可以拥有的进化脚本的数量是有限的,但是少一些会更好。我不能只删除我的表并重新开始的原因是我那里有我不想删除的数据。

我可能可以备份我的数据然后重新导入它,除了我有空间数据(PostGIS)而且我不确定这是否会正确备份。

0 投票
1 回答
7309 浏览

playframework - “数据库‘默认’处于不一致状态!” 来来去去

我的问题是部署服务器上的播放数据库演变一次又一次处于不一致状态。我不明白有什么问题。

  • 所有测试工作正常(在内存中)
  • 我可以使用 run 启动应用程序(在内存中)
  • 我删除了进化sql脚本并让它重新生成(通过点击浏览器进化触发器)
  • 我在 conf 文件中为 mysql 访问切换了必要的属性
  • 我开始构建play clean compile stage
  • 我删除并创建 mysql 数据库
  • 然后我用 -DapplyEvolutions.default=true 启动应用程序

我经常得到这个错误:

在玩弄了整个过程之后,它突然起作用了。

0 投票
1 回答
478 浏览

scala - 如何强制 slick 为继承的列生成 ddl

我有一种情况,我的许多表都需要相同的列:

  • 编号:长
  • 创建:时间戳

然而,网络从未使用过“created”列,“id”是。

为此,我使用了一个抽象类和对象:

然后我实现了一个具体的客户端:

然后是 ClientController 的一部分:

现在的问题是,我不希望将“已创建”列返回到 Web,这就是为什么它不包含在客户端案例类、默认投影或控制器表单中的原因。我只想将它设置为创建,所以我所做的是:

我的问题是光滑不会生成“创建”

扩展 BaseTable 的任何表的列。如果我手动添加“创建”列,一切正常。有没有办法仍然使用光滑的 ddl 生成并完成此操作?