Mysql 创建数据库播放java演变
我正在使用PlayJava2.5。 我用以下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
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
中一次性配置数据库,而不是将数据库配置硬编码到类中
您可以找到更多信息。问题似乎不在代码中,因为当我尝试连接现有数据库时,应用程序没有问题,请在启动模块之前播放加载应用程序尝试连接数据库默认值?我不知道这件事。感谢您的评论。问题似乎不在代码中,因为当我尝试连接现有数据库时,应用程序没有问题,在启动模块之前播放加载应用程序尝试连接数据库默认值?我不知道这件事。谢谢你的评论。