首先,对不起我的英语不好。
我有一个Rails 2.3.1项目,并将其更新到版本5.2.1。在这个项目上,我有一个delay_job,它在数据库表中插入多行。我要插入的代码是:
ActiveRecord::Base.connection.execute("
INSERT INTO <Table_Name> (id, col2, col3, col4...)
VALUES ((select coalesce(max(id),0)+1 from <Same_Table_Name>), val2, val3, val4...);...")
在rails 2.3.1上运行良好,我可以执行20000次插入而不会出现问题,但是在rails 5.2.1中,如果查询具有大约1500个以上的插入,则将行插入到表中,但是查询不会结束,不会返回。
如果我从查询中删除了ID和合并,然后将其留给了Auto Increment,则由于项目中的其他插入未更新Auto Increment的索引,它有时会工作,有时还会崩溃。而且,如果我直接从Postgres查询工具中执行查询,则效果很好。
我也已经尝试使用ActiveRecord :: Base.connection.exec_query,但是插入的限制更小。