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



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

我有一个奇怪的问题,插入总是不起作用。这是错误消息,当我检查DB表时,没有重复的PK插入。

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

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

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

不过,这个应用程序在Windows 2003服务器上运行良好。(我刚刚复制了应用程序目录和所有RoR设置。)

有线索吗?

看起来数据库(而不是Ruby代码)上可能有一个唯一的约束

一般来说,Rails是反对数据库约束的(尽管在社区中对此存在一些分歧)。我会寻找一个数据库约束,删除它,看看它是否能解决问题。

最新更新