【问题标题】:How do you insert to a SqlServer table with Ecto?如何使用 Ecto 插入 Sql Server 表?
【发布时间】:2016-03-21 14:50:28
【问题描述】:

我正在尝试将 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

【问题讨论】:

  • 您使用的是哪个数据库适配器?
  • 我正在使用 tds_ecto 适配器。还有其他 SqlServer 适配器吗?
  • 听起来你在做一些有趣的事情,马特!

标签: elixir phoenix-framework ecto


【解决方案1】:

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

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

但后来它不明白数据库会自动生成密钥。所以我把它改成:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多