我正在尝试将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
答案 0 :(得分:3)
看起来问题在于我如何在模型中声明主键。我用过:
@primary_key {:TextMessageHistoryId, :id, []}
但是它没有理解数据库会自动生成密钥。所以我把它改成了:
@primary_key {:TextMessageHistoryId, :id, autogenerate: true}
然后它停止尝试将内容插入主键。