首页 > 解决方案 > 使用 insert_all 只插入一条记录,它不是第一条

问题描述

我是使用此堆栈和框架进行开发的新手。我正在使用 Ecto 3.4,根据我阅读文档并查看我在网上找到的内容的理解,这应该将所有记录插入我的单元中。我尝试过清理、重新编译和重置数据库。这是在从seeds.exs 调用的模块中。我非常需要播种数据,所以我想清理它。感觉代码几乎是陈旧的,因为它插入的唯一记录不是第一个记录,现在有更多记录要播种。

  def seed do
    timestamp =
      NaiveDateTime.utc_now()
      |> NaiveDateTime.truncate(:second)

    units = [
      %{abbreviation: "tsp", unit: "teaspoon", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "tbsp", unit: "tablespoon", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "oz", unit: "ounces", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "fl oz", unit: "fluid ounce", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "cup", unit: "cup", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "pt", unit: "pint", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "qt", unit: "quart", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "gal", unit: "gallon", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "lb", unit: "pound", standard: "U.S.", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "l", unit: "liter", standard: "Metric", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "ml", unit: "milliliter", standard: "Metric", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "g", unit: "grams", standard: "Metric", inserted_at: timestamp, updated_at: timestamp},
      %{abbreviation: "kg", unit: "kilograms", standard: "Metric", inserted_at: timestamp, updated_at: timestamp}
    ]

    Foo.Repo.insert_all(Unit, units)
  end

我在这里有什么错误吗?或者这里有什么东西可以解开?我已经删除了构建目录。

标签: elixirphoenix-frameworkecto

解决方案


推荐阅读