运行 命令行的演变
Run Evolutions in Command Line
这是我修补 Play 框架的第一天,我在进化方面遇到了困难。我正在使用 Play 2.4。
我从 activator ui
中出现的许多应用程序中挑选了一个示例应用程序,它使用 play-slick
和 play-slick-evolutions
进行数据库连接和演化。
我已经仔细阅读了 the docs,但我似乎无法从命令行找到 运行 演变的方法。当我在 bash 上 运行 activator
时,我陷入了 shell,而 help
没有提出任何关于 运行ning 的进化, 或光滑。
我已经 PHP 有一段时间了,所以我已经习惯了能够从命令行 运行 这些 up/down。我可以从数据库客户端删除表并执行 activator run
这应该提示我 运行 演化,但我正在寻找正确的手动方法来执行此操作。我想这是可能的,因为它需要在部署时完成。
据我所知,它们并非设计为 运行 手动。在开发中,Play asks 你 运行 他们:
在生产环境中,我通过使用参数 -DapplyEvolutions.default=true
启动我的服务器来触发进化。您也可以将此(当然没有 -D
)写入 application.conf 文件,以便始终 运行 他们。您也可以仅使用 -DapplyUpEvolutions.default=true
或 -DapplyDownEvolutions.default=true
.
的向下或向上演变
当然,您始终可以选择手动复制您需要的脚本部分,然后将其应用到您最喜欢的数据库工具中。但是,您随后需要通过手动更改 table play_evolutions
来告诉 Play 您做了什么。一个更简单的解决方案是根本不使用 Play Framework 提供的进化机制。
对我有用且不涉及启动游戏实例的快速技巧:
export PGPASSWORD=<password>
for SQL_FILE in $(ls <path-to-evolution-files>); do
psql -h localhost -U <username> -c "$(sed '1,/Ups/d' <path-to-evolution-files>/$SQL_FILE | sed -n '/Downs/q;p')";
done
删除 Ups
之前的所有内容以及 Downs
之后的所有内容,并在 Postgres 实例上运行命令。
这是我修补 Play 框架的第一天,我在进化方面遇到了困难。我正在使用 Play 2.4。
我从 activator ui
中出现的许多应用程序中挑选了一个示例应用程序,它使用 play-slick
和 play-slick-evolutions
进行数据库连接和演化。
我已经仔细阅读了 the docs,但我似乎无法从命令行找到 运行 演变的方法。当我在 bash 上 运行 activator
时,我陷入了 shell,而 help
没有提出任何关于 运行ning 的进化, 或光滑。
我已经 PHP 有一段时间了,所以我已经习惯了能够从命令行 运行 这些 up/down。我可以从数据库客户端删除表并执行 activator run
这应该提示我 运行 演化,但我正在寻找正确的手动方法来执行此操作。我想这是可能的,因为它需要在部署时完成。
据我所知,它们并非设计为 运行 手动。在开发中,Play asks 你 运行 他们:
在生产环境中,我通过使用参数 -DapplyEvolutions.default=true
启动我的服务器来触发进化。您也可以将此(当然没有 -D
)写入 application.conf 文件,以便始终 运行 他们。您也可以仅使用 -DapplyUpEvolutions.default=true
或 -DapplyDownEvolutions.default=true
.
当然,您始终可以选择手动复制您需要的脚本部分,然后将其应用到您最喜欢的数据库工具中。但是,您随后需要通过手动更改 table play_evolutions
来告诉 Play 您做了什么。一个更简单的解决方案是根本不使用 Play Framework 提供的进化机制。
对我有用且不涉及启动游戏实例的快速技巧:
export PGPASSWORD=<password>
for SQL_FILE in $(ls <path-to-evolution-files>); do
psql -h localhost -U <username> -c "$(sed '1,/Ups/d' <path-to-evolution-files>/$SQL_FILE | sed -n '/Downs/q;p')";
done
删除 Ups
之前的所有内容以及 Downs
之后的所有内容,并在 Postgres 实例上运行命令。