Mysql 创建数据库播放java演变

Mysql 创建数据库播放java演变,mysql,playframework,playframework-2.5,playframework-evolutions,deadbolt-2,Mysql,Playframework,Playframework 2.5,Playframework Evolutions,Deadbolt 2,我正在使用PlayJava2.5。 我用以下java代码创建了一个数据库 public OnStartup() throws SQLException { //demo create database with java code Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/?user=root&password=12345678"); Statement s

我正在使用PlayJava2.5。 我用以下java代码创建了一个数据库

public OnStartup() throws SQLException {
    //demo create database with java code
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/?user=root&password=12345678");
    Statement s = con.createStatement();
    int Result = s.executeUpdate("CREATE DATABASE recruit3");
}
模块:

public class OnStartupModule extends AbstractModule {
    @Override
    public void configure() {
        bind(OnStartup.class).asEagerSingleton();
    }
}
application.conf:

play.modules {
    enabled += "be.objectify.deadbolt.java.DeadboltModule"
    enabled += modules.CustomDeadboltHook
    enabled += modules.OnStartupModule 
}

default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost:3306/recruit3"
default.username=root
default.password="12345678"
我的问题是,为什么要运行web应用程序

error Cannot connect to database [default]
如果我不想使用mysql workbench创建数据库,那么如何解决这个问题

如果您有任何建议或不能这样做,请告诉我。
感谢您的帮助。

您的数据库键以
default
开头,而不是
db.default
。正确的语法如下所示:

db {
    default {
        driver=com.mysql.jdbc.Driver
        url="jdbc:mysql://localhost:3306/recruit3"
        username=root
        password="12345678"
    }    
}

您已经将您的类设置为渴望的singleton,因此它应该可以工作

您的数据库键以
default
开始,而不是以
db.default
开始。正确的语法如下所示:

db {
    default {
        driver=com.mysql.jdbc.Driver
        url="jdbc:mysql://localhost:3306/recruit3"
        username=root
        password="12345678"
    }    
}

您已经将您的类设置为渴望的singleton,因此它应该可以工作,并且可以将数据库键移动到
db。默认的
命名空间,您应该将
数据库
注入
OnStartup
以访问配置了这些属性的数据库

首先,将Play的JDBC支持添加到
build.sbt

libraryDependencies += javaJdbc
如果您已经在运行activator,请确保使用
reload
命令获取对生成的更改

更新
application.conf
,将数据库配置放入正确的命名空间中

db {
  default {
    driver=com.mysql.jdbc.Driver
    url="jdbc:mysql://localhost:3306/recruit3"
    username=root
    password="12345678"
  }    
}
最后,更新启动时的
OnStartup
以接收将由Play注入的
数据库
对象

import javax.inject.Inject;
import play.db.Database;

public class OnStartup {

    @Inject
    public OnStartup(final Database db) throws SQLException {
        db.withConnection((Connection conn) -> {
            final Statement s = con.createStatement();
            return s.executeUpdate("CREATE DATABASE recruit3");
        });
    }
}
这允许您在
application.conf
中一次性配置数据库,而不是将数据库配置硬编码到类中


您可以找到更多信息。

以及将数据库键移动到
db.default
命名空间,您应该将
数据库
注入
启动时
以访问配置了这些属性的数据库

首先,将Play的JDBC支持添加到
build.sbt

libraryDependencies += javaJdbc
如果您已经在运行activator,请确保使用
reload
命令获取对生成的更改

更新
application.conf
,将数据库配置放入正确的命名空间中

db {
  default {
    driver=com.mysql.jdbc.Driver
    url="jdbc:mysql://localhost:3306/recruit3"
    username=root
    password="12345678"
  }    
}
最后,更新启动时的
OnStartup
以接收将由Play注入的
数据库
对象

import javax.inject.Inject;
import play.db.Database;

public class OnStartup {

    @Inject
    public OnStartup(final Database db) throws SQLException {
        db.withConnection((Connection conn) -> {
            final Statement s = con.createStatement();
            return s.executeUpdate("CREATE DATABASE recruit3");
        });
    }
}
这允许您在
application.conf
中一次性配置数据库,而不是将数据库配置硬编码到类中


您可以找到更多信息。

问题似乎不在代码中,因为当我尝试连接现有数据库时,应用程序没有问题,请在启动模块之前播放加载应用程序尝试连接数据库默认值?我不知道这件事。感谢您的评论。问题似乎不在代码中,因为当我尝试连接现有数据库时,应用程序没有问题,在启动模块之前播放加载应用程序尝试连接数据库默认值?我不知道这件事。谢谢你的评论。