我正在看着#34; Hello Slick"教程。定义了一个用户表,然后使用users.schema.create
创建(github上的代码已过时,因此它在那里users.ddl.create
,但是当我在Activator中创建应用程序时,它schema
{{ 1}}因为它使用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是否相关。
答案 0 :(得分:1)
您可以使用光滑模式代码生成功能:
http://slick.typesafe.com/doc/3.0.0/code-generation.html
这样,如果更新数据库模式,则不必手动编写与该表对应的灵活类,这将为您执行此操作。