我有类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
答案 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。