我正在使用play java 2.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"
我的问题是,为什么要运行网络应用创建
error Cannot connect to database [default]
如果我不想用mysql workbench创建数据库,如何解决这个问题。
任何建议或不能这样做,请告诉我。 谢谢你的进步。
答案 0 :(得分:2)
除了将数据库密钥移动到db.default
命名空间之外,您应该将Database
注入OnStartup
以访问使用这些属性配置的数据库。
首先,将Play的JDBC支持添加到build.sbt
。
libraryDependencies += javaJdbc
如果您已经在运行激活器,请确保使用reload
命令获取对构建的更改。
更新application.conf
以将数据库配置放入正确的命名空间。
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
最后,更新OnStartup
以接收将由Play注入的Database
对象。
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
中配置数据库一次,而不是将数据库配置硬编码到类中。
您可以找到更多信息here。
答案 1 :(得分:0)
您的数据库密钥以default
而不是db.default
开头。正确的语法是这样的:
db {
default {
driver=com.mysql.jdbc.Driver
url="jdbc:mysql://localhost:3306/recruit3"
username=root
password="12345678"
}
}
你已经把你的班级作为渴望的单身人士,所以它应该工作