Эволюция автоматически создает базу данных и таблицу?

У меня есть класс 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

built.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

2 ответа

Я пробовал эволюцию в рамках Play.

Что касается вашего вопроса: "Эволюция автоматически создает базу данных и таблицу?"

Поскольку вы используете MySQL,

1.) Нет, эволюция не создаетбазу данных для вас. Вам нужно создать базу данных "testdb" и предоставить привилегии "root"

2.) Да, Evolution создасттаблицу данных для вас.

Почему бы не использовать H2 в качестве движка базы данных для тестирования? Эволюция создаст базу данных и предоставляет вам данные с нуля (не нужно создавать базу данных). Вы также можете имитировать MySQL, используя движок базы данных H2:

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

Пожалуйста, смотрите ссылку: https://www.playframework.com/documentation/2.5.x/Developing-with-the-H2-Database

Я не знаю скалаза, но в целом эволюции не создаются автоматически, они пишутся вручную. Каждый раз, когда вы вносите изменения в свою базу данных, вы пишете следующий пронумерованный файл sql, чтобы применить изменения (Ups) и удалить изменения (Downs).

Вы можете использовать инструменты базы данных (такие как функция синхронизации базы данных MySql Workbenches), чтобы создать "разницу" между моделью и реальной базой данных. Эти сценарии могут помочь в написании эволюции.

Дальнейшие документы здесь.

Другие вопросы по тегам