Эволюция автоматически создает базу данных и таблицу?
У меня есть класс 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), чтобы создать "разницу" между моделью и реальной базой данных. Эти сценарии могут помочь в написании эволюции.
Дальнейшие документы здесь.