我有一个非常简单的 Play 应用程序,它说明了这里可用的 MySQL(而不是默认的 H2)数据库的使用:
https://github.com/ics-software-engineering/play-example-mysql
自述文件解释了使用本地安装的 MySQL 在本地运行应用程序所需的步骤。它在本地运行良好。
我一直试图让这个应用程序在 CloudBees 上运行,但没有成功。我的基本策略是:
- 使用 CloudBees Play 2 ClickStart 创建示例应用程序、数据库、存储库和构建系统。
- 编辑构建文件以引用我的 github 存储库。
- 重建和重新部署。
此处提供有关此策略的更完整说明。
当我完成这个过程时,系统会构建和部署,但是当我尝试检索主页时,应用程序控制台中会出现 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 上正确部署,我该如何解决?