如何从主应用程序运行另一个应用程序的迁移

坦威

我在我的项目中遵循伞形应用程序的结构。我正在编写访问层应用程序,该应用程序没有单独的存储库,但需要迁移某些表和关系才能正常工作。我不想为其创建单独的存储库,并使其变得复杂以维护配置等。

我尝试了以下两种方法

defmodule Data.Repo.Migrations.CreateActions do
  use Ecto.Migration

  def change do
    # First approach
    opts = []
    file_path = ExAcl.SeedHelper.priv_path_for("20181129092126_create_actions.exs", app: :acl)
    Ecto.Migrator.run(Data.Repo, file_path, :up, opts)

    {:ok, _} = Application.ensure_all_started(:acl)

    # Second approach
    Ecto.Migrator.up(HaiData.Repo, 20181129092126, ExAcl.Repo.Migrations.CreateActions)
  end
end

但是它不会在另一个应用程序中运行迁移。

也许我没有朝正确的方向前进。我不确定在另一个应用程序中运行迁移的最佳方法是什么

目标:通过主数据应用在acl应用中运行迁移。

何塞·瓦里姆(JoséValim)

如果尝试Ecto.Migrator.run从另一个迁移内部运行迁移,则很可能会遇到数据库锁,因为Ecto不允许您同时运行迁移。

如果要使用此方法,则可以执行以下操作:

def change do
  file_path = ExAcl.SeedHelper.priv_path_for("20181129092126_create_actions.exs", app: :acl)
  Code.require_file(file_path)
  ModuleInTheMigrationFile.change()
end

但是我不确定从长远来看这将是可维护的。如果还有其他迁移,则必须明确要求并逐个调用每个迁移。那么未来的新迁移又会发生什么呢?因此,我提出以下建议之一:

  1. 如果您只想执行一次迁移并且只执行一次,只需将迁移文件复制到迁移文件夹中

  2. 如果两个迁移文件夹并排发展,并且您希望自动从两个目录运行迁移,则可以调用ecto.migrate两次:

    mix ecto.migrate --migrations-path priv/repo/migrations
    mix ecto.migrate --migrations-path other/app/priv/repo/migrations
    
  3. 如果两个迁移文件夹并排发展,并且您希望从两个目录手动运行迁移,则可以将一个目录中的迁移复制到另一个目录中,而只保留一个目录作为事实来源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从当前应用程序运行另一个应用程序?

Django 将 ImageFiles 从一个应用程序迁移到另一个应用程序

当另一个应用程序启动时如何运行我的应用程序

屏幕关闭或打开另一个应用程序时如何保持应用程序运行?

如何监控另一个应用程序?

我的应用程序如何检索另一个应用程序的实时图块?

如何从另一个应用程序启动iOS相册应用程序?(迅速)

如何防止我的应用程序在另一个应用程序中打开?

如何离开当前应用程序并启动另一个应用程序的活动?

如何让 WPF 应用程序打开另一个应用程序(如果存在)

如何从我的Ubuntu Touch应用程序启动另一个应用程序?

从一个应用程序终止另一个正在运行的应用程序

Nginx-在主域上运行另一个应用程序的子域中运行Wordpress

如何从另一个Go应用程序运行Go编译器

如何让 Modelsim 运行另一个应用程序

从另一个应用程序更改一个应用程序的变量

Cocos2d-js:当从一个应用程序迁移到另一个应用程序时,对在浏览器上运行的cocos2d-js应用程序产生影响

如何从另一个应用程序向一个应用程序添加视图

Xamarin Forms:如何从另一个应用程序打开一个应用程序?

如何使一个应用程序与另一个应用程序实时通信?

如何通过另一个应用程序“显示”一个应用程序(Visual C ++)

如何从另一个应用程序本机android打开一个应用程序?

如何在另一个 ember 应用程序中嵌入一个 ember 应用程序?

另一个应用程序中的Django迁移文件?

Tizen本机服务应用程序,以检查另一个应用程序是否正在运行

如何从另一个系统访问在一个系统上运行的Moqui Web应用程序

如何让 Java 程序在运行时生成另一个 Java 应用程序

从另一个应用程序复制文件

静默刷新另一个应用程序