使用rails种子文件时,Oracle序列未更新

时间:2015-02-13 04:10:36

标签: ruby-on-rails oracle oci8

这是我拥有的种子文件的一部分

   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')

很高兴知道为什么虽然......

1 个答案:

答案 0 :(得分:1)

我不知道Country.create的作用,最有可能的是:如果你自己没有分配id,它将由创建函数或数据库端通过触发器设置。您可以检查触发器的tabledefinition。