Запрос вставки не вернется на рельсах - PullRequest
0 голосов
/ 04 марта 2019

Во-первых, извините за мой плохой английский.

У меня был проект rails 2.3.1, и я обновляю его до версии 5.2.1.В этом проекте у меня есть delayed_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...);...")

На рельсах 2.3.1 все работало нормально, я мог без проблем выполнить 20000 вставок, но в рельсах 5.2.1, если запрос имеетболее 1500 вставок, строки вставляются в таблицу, но запрос не будет завершен, не вернется.

Если я удаляю идентификаторы и объединения из запроса, оставляя его на АвтоУвеличивается, иногда это работает, а иногда и происходит сбой из-за других вставок в проекте, которые не обновляют индекс автоинкремента.И если я выполняю запрос непосредственно из Postgres Query Tool, он работает нормально.

Я также уже пытался использовать ActiveRecord :: Base.connection.exec_query, но лимит вставок еще меньше.

...