evolution会自动创建数据库和表吗?

时间:2016-02-03 20:04:13

标签: sbt playframework-2.4 slick-3.0 scala-2.11

我有类GroupTable,它创建表的模式。

正如我所看到的,在其他项目中有conf / evolution / default文件夹文件1.sql,它是从代码自动生成的(我假设)。

但是当我启动我的应用程序时 - 什么都没有创建。

我该怎么办?是自动创建还是我在代码中编写它?

List<CustomClass> lcc = new List<CustomClass>();

application.conf:

 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)
  }

built.sbt:

slick.dbs.default.driver = "slick.driver.MySQLDriver$"
slick.dbs.default.db.driver="com.mysql.jdbc.Driver"
slick.dbs.default.db.url="jdbc:mysql://localhost:3306/testdb"
slick.dbsdefault.user="root"
slick.dbs.default.password=""

play.evolutions.autoApply=true

evolutionplugin=enabled
play.evolutions.db.default.autoApply=true
play.evolutions.db.default.autoApplyDowns=true

2 个答案:

答案 0 :(得分:1)

我在Play框架中尝试过进化。

关于你的问题,“ evolution会自动创建数据库和表吗?

因为你使用的是mysql,

1。)不,evolution不会为您创建数据 base 。您需要创建“testdb”数据库并将权限授予“root”

2。)是的,evolution会为您创建数据

为什么不使用H2作为测试的数据库引擎?演变将从头开始为您创建数据库和数据表(无需创建数据库)。您也可以使用H2数据库引擎模仿mysql:

db.default.url="jdbc:h2:mem:play;MODE=MYSQL"

请看链接: https://www.playframework.com/documentation/2.5.x/Developing-with-the-H2-Database

答案 1 :(得分:0)

我不知道scalaz,但总的来说,演变是自动创建,它们是手动编写的。每次对数据库进行更改时,都要编写下一个编号的sql文件,以应用更改(Ups)并删除更改(Downs)。

您可以使用数据库工具(例如MySql Workbenches数据库同步功能)生成模型与实际数据库之间的“差异”。这些脚本可以帮助编写演变。

进一步的文档here