如何使用Ecto插入SqlServer表?

时间:2016-03-21 14:50:28

标签: elixir phoenix-framework ecto

我正在尝试将Ecto挂钩到现有的SqlServer数据库。 SqlServer想要自动填充主键字段,因此我在插入时无法提供值。我最初根据需要标记了字段,但即使在我删除它之后,它构造的INSERT查询仍然具有该字段并且正在尝试将:nil放入其中。所以我仍然收到错误。是否有一种特殊的方式我应该设置模型,或者我应该传递给INSERT以使其工作?你如何插入SqlServer?

我正在使用tds_ecto适配器。我得到的错误是:

Cannot insert explicit value for identity column in table 'TextMessageHistory' when IDENTITY_INSERT is set to OFF

1 个答案:

答案 0 :(得分:3)

看起来问题在于我如何在模型中声明主键。我用过:

@primary_key {:TextMessageHistoryId, :id, []}

但是它没有理解数据库会自动生成密钥。所以我把它改成了:

@primary_key {:TextMessageHistoryId, :id, autogenerate: true}

然后它停止尝试将内容插入主键。

相关问题