gpt4 book ai didi

sql-server - ActiveRecord主键是varchar,保存时出错

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:07 25 4
gpt4 key购买 nike

我有一个活跃的记录类

  class Service_Catalogue < ActiveRecord::Base
set_table_name "service_catalogue"
set_primary_key "myKey"
end

myKey 是一个 nvarchar (sql server)。

当我尝试保存它时

  service_catalogue= Service_Catalogue.new()
service_catalogue.myKey = "somevalue"
service_catalogue.save

我收到以下错误:

  IDENTITY_INSERT could not be turned OFF for table [service_catalogue] (ActiveRecord::ActiveRecordError)

似乎 ActiveRecord 认为主键是一个标识列(它不是一个 varchar),所以失败了。

有没有办法告诉它不要尝试关闭标识插入?

更新

事实证明,事件记录 sql server 适配器的版本是罪魁祸首。我以前一直在使用 1.0.0.9250,但不知何故安装了 2.2.19(我推测是在进行 gem 更新时)。恢复到旧版本后,它工作正常。

最佳答案

ActiveRecord 喜欢有整数 ID 列,如果不是这种情况则抛出一个合适的。可以训练它处理备选方案,但这取决于您的环境。

另一种方法是使用传统的基于整数的 ID 字段和用于查找的唯一“键”字段。

class Service_Catalogue < ActiveRecord::Base
set_table_name "service_catalogue"

validates_uniqueness_of :myKey
end

如果可能的话,改变您的架构以适应 ActiveRecord 可能比指导 ActiveRecord 处理您的架构更方便。如果没有,您可能真的需要放下心来。

另一种方法可能是使用没有相同限制的替代 ORM,例如 DataMapper。

关于sql-server - ActiveRecord主键是varchar,保存时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com