Play!:Slick 的 DDL 会取代 Evolutions 吗?
Posted
技术标签:
【中文标题】Play!:Slick 的 DDL 会取代 Evolutions 吗?【英文标题】:Play!: Does Slick's DDL replace Evolutions? 【发布时间】:2014-02-19 16:35:10 【问题描述】:这可能是个愚蠢的问题,但我是 Play 新手! & 光滑。在使用 Slick 的 table.ddl.create
时,我注意到它并没有创造进化,但应用程序仍然有效。
这会取代进化吗?我可以在生产中使用它吗?我应该吗?
提前致谢。
【问题讨论】:
【参考方案1】:Slick 和 Slick DDL 插件都只能生成代码来创建或删除您的架构,而不是进化它。所以你仍然需要 Play 进化或类似的东西来修改现有的模式。在 Slick 团队中,我们正在努力开发迁移解决方案(优先级较低)。许多部分已经存在,但尚未正确集成。有@nafg 的模式操作 DSL:https://github.com/nafg/slick-migration-api 和我一年前的数据库版本管理工具原型:https://github.com/cvogt/migrations/。后者的代码生成部分已经进入了 Slick 2.0。正确集成所有这些将为我们提供类型安全的数据库迁移脚本的全面解决方案。
【讨论】:
【参考方案2】:Slick 能够为您定义的表生成 DDL,它不包含执行进化所做的逻辑。
另一方面,play slick 插件包含一个 SlickDDLPlugin,当您在非 prod 模式下运行您的应用程序时(例如使用 play run),它将为您生成和运行 DDL 演变它还会在您的 conf/ 中转储这些演变。进化目录。
处理进化的来源: https://github.com/freekh/play-slick/blob/master/src/main/scala/play/api/db/slick/plugin/SlickPlugin.scala
【讨论】:
以上是关于Play!:Slick 的 DDL 会取代 Evolutions 吗?的主要内容,如果未能解决你的问题,请参考以下文章
Play-Slick 插件是不是完全支持 Slick 2.0?
升级 Play 到 2.4,Slick 到 3.1.1,值 withTransaction 不是 play.api.db.slick.Database 的成员