0

我有一个非常简单的 Play 应用程序,它说明了这里可用的 MySQL(而不是默认的 H2)数据库的使用:

https://github.com/ics-software-engineering/play-example-mysql

自述文件解释了使用本地安装的 MySQL 在本地运行应用程序所需的步骤。它在本地运行良好。

我一直试图让这个应用程序在 CloudBees 上运行,但没有成功。我的基本策略是:

  1. 使用 CloudBees Play 2 ClickStart 创建示例应用程序、数据库、存储库和构建系统。
  2. 编辑构建文件以引用我的 github 存储库。
  3. 重建和重新部署。

此处提供有关此策略的更完整说明。

当我完成这个过程时,系统会构建和部署,但是当我尝试检索主页时,应用程序控制台中会出现 MySQL 语法错误:

[ [37minfo [0m] play - database [default] connected at jdbc:mysql://ec2-23-21-211-172.compute-1.amazonaws.com:3306/play-example-mys
[ [31merror [0m] play - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sequence page_retrieval_seq' at line 1 [ERROR:1064, SQLSTATE:42000]
Oops, cannot start the server.
  @6f3k8cj6c: Database 'default' is in inconsistent state!
    at play.api.db.evolutions.Evolutions$.checkEvolutionsState(Evolutions.scala:177)

这是一个奇怪的错误,因为语法错误“sequence page_retrieval_seq”与数据库为默认(H2)时 Play 在 1.sql 中生成的行之一非常相似:

create sequence page_retrieval_seq

不幸的是,这行实际上不在我的 1.sql 文件中,当我在本地运行系统时,我没有收到此错误。我正在为 osx10.7 (x86_64) 运行 MySQL Ver 14.14 Distrib 5.6.12。

我认识到,对于生产用途,不建议启用自动进化,但这不是我想在这里解决的问题。我的目标是让 CloudBees 应用程序提供代码的最新工作版本的快照,并让演进在 CloudBees MySQL 上工作,就像它们在我的本地 MySQL 安装中工作一样。

我已经尝试了这个答案中概述的步骤,但它在 CloudBees 上不起作用,无论如何我当前的代码已经在本地安装的 MySQL 上正常工作。

为什么我的简单 Play 应用程序无法在 CloudBees 上正确部署,我该如何解决?

4

2 回答 2

2

在“生产模式”下运行播放时,当涉及 ebean 时,播放运行演变似乎存在问题

https://github.com/playframework/playframework/issues/1410

我已经测试了进化,只要不使用 ebean,它们甚至可以在生产模式下工作。

在任何情况下,在生产应用程序中运行进化都是不可取的,这可能就是为什么直到现在才发现这个错误。

我更新了文档:https ://developer.cloudbees.com/bin/view/RUN/Playframework ,其中包含有关从任何地方连接到数据库的信息,因此您可以从桌面或 Jenkins 等运行进化。

因此,在更接近播放框架 prod 模式下运行“播放开始”以亲自查看此行为。

此外,JPA 似乎对 ORM 有更广泛的用途:https ://github.com/typesafehub/play-spring-data-jpa

于 2013-07-31T05:30:00.673 回答
0

编辑:是的,我错了,读错了!

=====================

据我所知 MySQL 不支持序列。

http://dev.mysql.com/doc/refman/5.6/en/faqs-general.html#qandaitem-B-1-1-6

mysql> create sequence test;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sequence blag' at line 1
于 2013-07-30T04:28:35.040 回答