这是我拥有的种子文件的一部分
Country.create(id: 1, name: 'Turkey', 'description' : 'Gobble gobble')
Country.create(id: 2, name: 'Hungary', 'description' : 'Blah blah blah')
运行后,国家/地区表格中有两条记录。
现在通过网络界面或通过API尝试创建一个新的国家/地区,我从Oracle收到以下错误:
OCIError: ORA-00001: unique constraint
约束在主键上。播种后,它尝试使用id' 1,2创建的下两条记录但它们已经存在。
我不明白为什么在通过API或网络界面使用与控制器/模型相同的代码创建Country
时,我会得到不同的结果。
如果我通过SQLDeveloper使用以下代码段改变序列,一切正常:
ALTER SEQUENCE countries_seq INCREMENT BY 100;
select countries_seq from dual;
ALTER SEQUENCE countries_seq INCREMENT BY 1;
请注意,所有模型都会发生这种情况,我只是以Country
为例。
我正在使用
Ruby 2.1.0
Rails 4.0.5
oracle-enhanced 1.5.5 gem
ruby-oci8 2.1.7 gem
修改
如果我没有在创建参数中输入id,那么一切正常。
Country.create(name: 'Turkey', 'description' : 'Gobble gobble')
Country.create(name: 'Hungary', 'description' : 'Blah blah blah')
很高兴知道为什么虽然......
答案 0 :(得分:1)
我不知道Country.create的作用,最有可能的是:如果你自己没有分配id,它将由创建函数或数据库端通过触发器设置。您可以检查触发器的tabledefinition。