【发布时间】:2016-03-11 21:35:27
【问题描述】:
我正在查看“Hello Slick”教程。定义了一个用户表,然后使用users.schema.create 创建(github 上的代码已经过时,所以那里是users.ddl.create,但是当我在Activator 中创建应用程序时,它是schema,因为它使用的是接近的Slick 3.0.0足够)。但是,如果我第二次运行该应用程序,则会出现错误,因为该表已经存在。我没有看到像users.schema.createIfNotExists 这样的选项,这有点令人惊讶。但无论如何,如果我将来某个时候向表中添加一列,我将需要更复杂的东西。那么 Slick 是否无法帮助迁移/进化?
我正在使用 Play,据说是 Play Slick has special support for database evolutions。目前尚不清楚除了 Slick 特有的 Play evolutions 之外还提供了什么:我们只是被告知添加一个依赖项。我看不到任何进一步的文档。
我是否必须手动编写 SQL 以进行进化(1.sql、Ups、Downs 等)?如果是这样,另外编写column[Int]("ID", O.PrimaryKey, O.AutoInc) 之类的代码似乎很愚蠢。我对重复工作感到困扰,并担心如果我的 SQL/DDL 错误,当我访问数据库时会出现细微的错误。我可能错了,但我似乎记得在 Django 中更改模型后可以自动生成迁移,所以这似乎不是一个无法解决的问题。这只是不是已经实现的东西还是我遗漏了什么?
如果相关,我正在使用 PostgreSQL。
【问题讨论】:
标签: scala playframework playframework-2.0 database-migration slick-3.0