ActiveRecord :: StatementInvalid(OCIError:ORA-00001:违反了唯一约束(xxxxxxxx)

时间:2014-09-20 17:46:24

标签: ruby-on-rails

几年前我开发了一个小型RoR应用程序(ruby 1.8.7,rails 2.1.0,rubygem 0.9.4),现在我在Windows 2008服务器上移动了应用程序。

我有一个奇怪的问题,插入并不是一直都在工作。这是错误消息,当我检查数据库表时没有重复的PK插入。

ActiveRecord :: StatementInvalid(OCIError:ORA-00001:违反了唯一约束(xxxxxxxx):INSERT INTO xxxxxx(xxxx,xxxx,xxxx,xxxx,......) ... ... ...

我是唯一一个正在测试并且没有打开会话的人。我确信生产数据库模式和测试数据库模式是相同的。我使用测试数据库架构测试了所有三种环境,但没有帮助。

有一点需要注意的是,在我收到RoR错误消息之后,如果我只按了F5键几次,插入就会起作用,我会得到下一个成功的页面。

同样的应用程序在Windows 2003服务器上运行良好。 (我刚刚复制了app dir和所有RoR设置。)

任何线索?

1 个答案:

答案 0 :(得分:0)

看起来数据库可能存在唯一约束(而不是Ruby代码)

一般来说,Rails是针对数据库限制的(虽然在社区中存在一些不同意见)。我会寻找数据库约束,删除它,看看是否能解决问题。