在Heroku上部署Play Framework 2.1.1

时间:2013-07-07 09:40:45

标签: postgresql heroku playframework-2.0

所以我在将我的游戏应用程序放在Heroku上时遇到了问题

经历了几个教程,但无法让它发挥作用。

我的播放应用程序正在显示,但没有创建它的数据库。

当我查看日志时,即将到来

Database 'default' is in inconsistent state
....
Oops, cannot start the server.
.....
ERROR: syntax error at or near "auto_increment"

这是配置:

  1. 在application.conf中,所有数据库行都被注释

  2. 1.sql与正常相同(无变化)

  3. Procfile如下

    web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true 
    -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}
    
  4. 1.sql的缩短版本如下(自动生成)

    # --- Created by Ebean DDL
    # To stop Ebean DDL generation, remove this comment and start using Evolutions
    
    # --- !Ups
    
    create table admin (
        user_id                   bigint auto_increment not null,
        user_name                 varchar(255),
        user_username             varchar(255),
        user_password             varchar(255),
        user_privelege_level      integer,
        user_type                 integer,
        admin_id                  bigint,
        constraint pk_admin primary key (user_id))
    ;
    
    # --- a lot more tables
    
    alter table class add constraint fk_class_classteacher_1 foreign key (classteacher_user_id) references teacher (user_id) on delete restrict on update restrict;
    create index ix_class_classteacher_1 on class (classteacher_user_id);
    
    # --- a lot more fks and indices
    
    # --- !Downs
    
    SET FOREIGN_KEY_CHECKS=0;
    drop table admin;
    
    drop table book;
    
    # --- a lot more drops
    SET FOREIGN_KEY_CHECKS=1;
    

2 个答案:

答案 0 :(得分:3)

您正在使用MySQL语法 你可以发布你的SQL吗?我怀疑你用

INTEGER NOT NULL AUTO_INCREMENT

你应该使用

SERIAL PRIMARY KEY

答案 1 :(得分:3)

我终于完成了它。

显然Heroku不会重新生成进化脚本(这并不是真的有意义)

最佳选择是将您的开发切换到POSTGRESQL

http://www.postgresql.org/download/

对于任何可能需要某些指导如何做的人

  1. 更改Build.scala添加依赖项

        "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
    
  2. 更改application.conf

      db.default.driver=org.postgresql.Driver
      db.default.url="jdbc:postgresql://servername:port/db_name"
      db.default.user=postgres
      db.default.password=pass
      # Remember to comment user and password while pushing because this will 
      # cause an error as Heroku doesn't automatically use theirs 
    
  3. 运行播放应用并允许演变发生

  4. 致力于git,再次推动并开心。