Sbt 进化会自动创建数据库和表吗?
我有一个类GroupTable,它创建了表的模式 正如我所看到的,在其他项目中,conf/evolution/default文件夹文件1.sql是由代码自动生成的(我假设) 但当我启动应用程序时,什么也不会产生。 我该怎么办?它是自动创建的还是我在代码中编写的Sbt 进化会自动创建数据库和表吗?,sbt,playframework-2.4,slick-3.0,scala-2.11,Sbt,Playframework 2.4,Slick 3.0,Scala 2.11,我有一个类GroupTable,它创建了表的模式 正如我所看到的,在其他项目中,conf/evolution/default文件夹文件1.sql是由代码自动生成的(我假设) 但当我启动应用程序时,什么也不会产生。 我该怎么办?它是自动创建的还是我在代码中编写的 class GroupTable(tag: Tag) extends Table[Group](tag, "groups") { def name = column[String]("name", O.PrimaryKey)
class GroupTable(tag: Tag) extends Table[Group](tag, "groups") {
def name = column[String]("name", O.PrimaryKey)
def day = column[String]("day")
def subject = column[String]("subject")
def typeSub = column[String]("typeSub")
def start = column[Time]("start")
def end = column[Time]("end")
def teacher = column[String]("teacher")
def auditorium = column[Int]("auditorium")
override def * = (name, day, subject, typeSub, start, end, teacher, auditorium) <>((Group.apply _).tupled, Group.unapply)
}
Build.sbt:
name := "TimetableAPI"
version := "1.0"
lazy val `timetableapi` = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(cache, ws, specs2 % Test, evolutions,
"mysql" % "mysql-connector-java" % "5.1.34",
"com.typesafe.play" %% "play-slick" % "1.1.0",
"com.typesafe.play" %% "play-slick-evolutions" % "1.1.0")
unmanagedResourceDirectories in Test <+= baseDirectory(_ / "target/web/public/test")
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"
routesGenerator := InjectedRoutesGenerator
name:=“TimetableAPI”
版本:=“1.0”
lazy val`timetableapi`=(文件中的项目(“.”)。启用插件(PlayScala)
规模规避:=“2.11.7”
libraryDependencies++=Seq(缓存、ws、规范2%测试、演进、,
“mysql”%“mysql连接器java”%“5.1.34”,
“com.typesafe.play”%%“play slick”%%“1.1.0”,
“com.typesafe.play”%%“play slick evolutions”%%“1.1.0”)
Test中的unmanagedResourceDirectory我不知道scalaz,但一般来说,演进不是自动创建的,而是手动编写的。每次对数据库进行更改时,都要编写下一个编号的sql文件,以应用更改(递增)和删除更改(递减)
您可以使用数据库工具(如MySql Workbenches数据库同步功能)生成模型和实际数据库之间的“差异”。这些脚本可以帮助编写演进
更多文档。我在Play框架中尝试了进化
至于你的问题,“进化会自动创建数据库和表吗?”
因为您使用的是mysql
1.)不,进化不会为您创建数据基础。您需要创建“testdb”数据库并向“root”授予权限
2.)是的,evolution为您创建数据表
为什么不使用H2作为测试的数据库引擎?演进将从头开始为您创建数据库和数据表(无需创建数据库)。您还可以使用H2数据库引擎模拟mysql:
db.default.url="jdbc:h2:mem:play;MODE=MYSQL"
请参阅链接:
db.default.url="jdbc:h2:mem:play;MODE=MYSQL"