Phoniex - 在运行时创建表

时间:2017-12-05 12:42:46

标签: elixir phoenix-framework

根据这个问题(Dynamic Models in Phoenix Framework),可以使用Module.create在Elixir中动态创建模型。

可以在Phoenix / Elixir的运行时期间在数据库中为此模型创建一个表,而无需使用迁移文件吗?

2 个答案:

答案 0 :(得分:2)

PostgreSQL 2.0+的

MySQLEcto适配器具有执行原始SQL的能力:

qry =
  """
  CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  """

res = Ecto.Adapters.SQL.query!(Repo, qry, [])

Ecto.Adapters.SQL.query/4

另一种(可能是首选)方式是将此委托给基础mysql shell可执行文件:

System.cmd("mysql", ["#{create_table_script}"])

答案 1 :(得分:0)

在您的情况下(每月创建新的报表)我会抛弃创建数据库表的想法并考虑使用ETS / DETS组合。它们是键值存储(ETS - 内存中,DETS - 保存在磁盘上的数据 - 这是您基本上需要的),您可以阅读更多关于它们here的信息。

相关问题