Tag: ora 01400

Rails建模:将HABTM转换为has_many:through

我正在现有的Rails站点上进行维护工作,并且遇到了来自多对多关联的一些问题。 看起来该站点最初是使用has_and_belongs_to_many为几个关系构建的,这些关系后来在业务逻辑中变得更加复杂,所以我需要使用has_many :through来支持关系表中的其他字段。 但是,最初用于HABTM的连接表没有主键,我必须添加一个以支持使用has_many :through单独的关系建模。 将主键添加到包含大量数据的现有表的最佳方法是什么? 还有另一种方法可以做我想做的事吗? 顺便提一下,系统在Oracle上运行。 谢谢! 贾斯汀 更新11/9/09 3:58 pm:我不是Oracle的专家,并且在Oracle的非空,自动增量等版本中迷失了方向。 最初我尝试通过添加新字段作为主键来执行Mike和Corey所建议的操作,但Oracle不允许我将非空字段添加到非空表(ORA-01758)。 然后我将数据导出为SQL,删除行,添加PK并将其设置为非null,然后尝试导入数据,但我不断收到“无法将NULL插入id …”的错误。 (ORA-01400)。 最后,我尝试使用迁移,正如Corey在他的评论中所建议的那样,但是当我手动更改数据库时,rake遇到了Oracle抛出的相同错误(“无法将非空字段添加到非空表”)。 我清理了表,运行了迁移(工作),然后尝试重新导入数据,但是上次我尝试导入时遇到了相同的错误(“无法将NULL插入id …”)。 如何保存数据并添加我需要的主键? 我知道有可能写一个rake任务,但我不确定如何继续前进。 有任何想法吗?