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

Oracle sequence not updated when using rails seeds file

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

   Country.create(id: 1, name: 'Turkey', 'description' : 'Gobble gobble')
   Country.create(id: 2, name: 'Hungary', 'description' : 'Blah blah blah')

在 table 国家/地区中有两个记录 运行。

所以现在通过 Web 界面或通过 API 我尝试创建一个新国家,但我从 Oracle 收到以下错误:

OCIError: ORA-00001: unique constraint

约束在主键上。播种后,它会尝试创建 ID 为 1、2 的下两条记录,但它们已经存在。

我不明白为什么在通过 API 或 Web 界面使用与 controller/model 中相同的代码播种来创建 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')

很高兴知道为什么 但是...

我不知道 Country.create 做了什么,最有可能的是:如果您自己不分配 id,它将由触发器的创建函数或数据库端设置。您可以检查触发器的表定义。