几年前我开发了一个小型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设置。)
任何线索?
答案 0 :(得分:0)
看起来数据库可能存在唯一约束(而不是Ruby代码)
一般来说,Rails是针对数据库限制的(虽然在社区中存在一些不同意见)。我会寻找数据库约束,删除它,看看是否能解决问题。