【问题标题】:Play! Framework - Evolution don't start automatically on Server with MySQL玩!框架 - Evolution 不会在带有 MySQL 的服务器上自动启动
【发布时间】:2015-04-19 15:40:13
【问题描述】:

在服务器上启动我的应用程序后,它会连接到我的 MySQL 数据库。

2015-04-19 17:00:38,636 - [INFO] - from play in main 
database [default] connected at jdbc:mysql://localhost/crowdfundme

但是每次涉及数据库时它都会崩溃。

Cannot invoke the action, eventually got an error:   javax.persistence.PersistenceException: Query threw SQLException:Table  'crowdfundme.user' doesn't exist 
Bind values:[] 
Query was:
select t0.id c0, t0.name c1, t0.age c2, t0.money c3, t0.nationality c4, t0.has_funded c5, t0.has_answered_questions c6, t0.chosen_bike c7,   t0.funding_amount c8, t0.money_before_funding c9 from user t0 

进化脚本没有应用,但是第一次加载页面时,因为没有可能,所以无法应用。

我尝试使用常规技巧自动应用进化脚本:

evolutionplugin=enabled
applyEvolutions.default=true
applyDownEvolutions.default=true

但现在我想不通了。也许有一些我自己看不到的完全简单的东西?感谢您的每一个回答!

【问题讨论】:

    标签: mysql playframework playframework-2.3 playframework-evolutions


    【解决方案1】:

    是第一次进化吗?也许有一些向下的演变?

    【讨论】:

    • 我没有任何 1.sql,... 因为我认为 Ebean 可以为我处理它们(就像在使用 JDBC 的开发模式下一样)。 applyDownEvolutions.default=true 应用了任何向下进化不是吗?
    • 进化插件在开发模式下生成1.sql文件,生产模式使用与开发模式相同的文件。
    • 我在将 1.sql 文件部署到我的服务器之前删除了它,所以它不会引起任何问题。还是你的意思是用本地的MySQL数据库测试一下,如果创建了就用同样的1.sql?
    • 如果你删除了 1.sql 文件,evolutions 就不起作用了。使用 sql 文件重新部署或手动处理表创建。
    • 是的,我今天想通了……无论如何,谢谢您的回答! :)
    【解决方案2】:

    所以我自己发现了。你必须让游戏产生进化方案。在你的 application.conf 中使用 db.default.url="jdbc:h2:mem:play;MODE=MYSQL" 来创建 MySQL 方言的演变。 在我的情况下,我必须删除 1.sql 中的“序列”,以便在我的服务器上与我的 MySQL 数据库一起使用,但也许你可以找到一个替代品。

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 2017-04-03
      • 1970-01-01
      • 2014-06-20
      • 2012-12-15
      • 2019-12-29
      • 1970-01-01
      • 2018-11-10
      相关资源
      最近更新 更多