【问题标题】:Does evolution create automatically database and table?进化会自动创建数据库和表吗?
【发布时间】:2016-05-13 05:08:13
【问题描述】:

我有类 GroupTable,它可以制作表格的架构。

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

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

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

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

application.conf:

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

内置.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

【问题讨论】:

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


    【解决方案1】:

    我尝试在 Play 框架中进化。

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

    既然你用的是mysql,

    1.) 不,进化不会为您创建数据基础。您需要创建“testdb”数据库并授予“root”权限

    2.) 是的,进化为您创建数据表格

    为什么不使用 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

    【讨论】:

      【解决方案2】:

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

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

      更多文档here

      【讨论】:

        猜你喜欢
        • 2011-05-29
        • 2021-10-21
        • 1970-01-01
        • 2011-04-05
        • 2018-12-30
        • 1970-01-01
        • 2019-05-06
        • 1970-01-01
        相关资源
        最近更新 更多