我有几个使用keter和PostgreSQL部署的yesod应用程序。我最喜欢它们的是部署时发生的自动数据库迁移。
但是,现在我面临一个小问题:我在另一个虚拟机上设置了数据库副本;第二个DB是从属的,因此是只读的。当我启动部署了应用程序的keter时,这些应用程序无法启动,因为它们无法成功执行迁移脚本。只有虚拟更改,表没有实际更改,但应用程序无法以
"cannot execute ALTER TABLE in a read-only transaction"
。
是否可以在启动时通过keter或应用程序配置或ENV变量临时禁用迁移脚本?
答案 0 :(得分:0)
是否可以在启动时通过keter或应用程序配置或ENV变量临时禁用迁移脚本?
是的,有可能。我认为最简单的方法是使用环境变量。
如果您使用Yesod的脚手架站点,则必须在运行迁移的makeFoundation
函数中进行更改。请注意,使用名为runMigration
的函数来执行该功能。您需要添加适当的条件才能使其正常工作。