MySQL PersistenceException,Play中的"Connection is closed"!2.2

die*_*end 5 java mysql sql playframework ebean

我正在尝试Play框架并使用2.2.0版本和Java版本.

我想使用MySQL作为数据库,我已经按照网站上的说明进行操作.我能够运行进化脚本,但我无法将任何内容保存到数据库中.在数据库中创建的表.我[PersistenceException: java.sql.SQLException: Connection is closed!]在尝试调用Ebean.save()方法时得到了,这是在我的控制器中.

我所做的是:

  1. 设置build.sbt并添加插件

    libraryDependencies ++= Seq(
        javaJdbc,
        javaEbean,
        cache,
        "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置conf/application.conf

    db.default.driver=com.mysql.jdbc.Driver
    db.default.url="jdbc:mysql://localhost:3306/TLC?characterEncoding=UTF-8"
    db.default.user=root
    db.default.pass=secret
    
    Run Code Online (Sandbox Code Playgroud)
  3. Ebean服务器

    ebean.default="models.*"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建控制器类包控制器;

    import com.avaje.ebean.Ebean;
    import play.*;
    import play.data.Form;
    import play.mvc.*;
    import models.Bar;
    import views.html.*;
    
    public class Application extends Controller {
    
        public static Result index() {
            return ok(index.render("Your new application is ready."));
        }
    
        public static Result addBar() {
            Bar bar = Form.form(Bar.class).bindFromRequest().get();
            bar.save();
            return redirect(routes.Application.index());
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建了一个表单

    <form action="@routes.Application.addBar()" method="post">
        <input name="name"/>
        <input type="submit"/>
    </form>
    
    Run Code Online (Sandbox Code Playgroud)
  6. 添加了路线

    POST    /bars                       controllers.Application.addBar()
    
    Run Code Online (Sandbox Code Playgroud)
  7. 当然是模型本身.包装模型;

    import play.db.ebean.Model;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    
    @Entity
    public class Bar extends Model {
        @Id
        public String id;
        public String name;
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  8. 当然,在mysql中创建数据库本身.

我错过了什么?我这样做了4个小时,但仍然不知道出了什么问题.如果我在内存数据库中使用了h2,它的工作正常.请帮我.

谢谢!

Jas*_*son 0

您可以尝试的一件事是升级 mysql 连接器。您使用的版本有点旧(2011 年 4 月发布)

“mysql”%“mysql-connector-java”%“5.1.26”

如果这没有帮助,那么我会尝试确保凭据 + 连接 URL 正确。