【问题标题】:Play evolutions not updating the status to applied播放进化不更新状态为应用
【发布时间】:2022-11-02 21:50:50
【问题描述】:

我们正在使用带有 java 的 play 框架,并使用进化来进行常规模式更改。通常进化效果很好,但有时当进化脚本很重时(例如:在大约 5M 记录的表上执行 alter 语句),它们会卡在 apply_up 中。脚本没有问题,所有预期的更改都已应用于表。 play_evolutions 表在 last_problem 列中没有任何说明。

我知道代码负责更新状态,但根据这种情况,数据库更改似乎正在正确应用,但不知何故,它无法与 java 线程通信,java 无法更新状态。我检查了 wait_timeout、interactive_timeout,它们是 28800 秒,比实际查询所用的时间要长。

请就我们如何解决这个问题提供任何建议。谢谢

设置:用Java玩框架

数据库:MySQL RDS

播放版本:2.8.18(这无关紧要,因为问题存在 也适用于早期版本)

mysql连接器:8.0.30

【问题讨论】:

    标签: playframework playframework-2.0 playframework-evolutions


    【解决方案1】:

    使用重达 5M 的更新脚本,您的问题看起来像 Managing database evolutions 的最后一段中描述的内容,命名为Evolution 存储和限制

    进化存储在您的数据库中的一个名为的表中 play_evolutions。文本列存储实际的进化脚本。 您的数据库可能对文本列有 64kb 的大小限制。去工作 围绕 64kb 限制,您可以:手动更改 play_evolutions 表结构改变列类型或 (首选)创建多个小于 64kb 的进化脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      相关资源
      最近更新 更多