Я копал в stackoverflow, пытаясь найти других, у которых эти подготовленные заявления уже существуют.
В большинстве случаев правильная настройка единорога с помощью вилки after/before устраняет эти проблемы.
Однако в моем случае мы все еще получаем ошибки как таковые:
ActiveRecord::StatementInvalid: PG::Error: ERROR: prepared statement "a495" already exists: INSERT INTO "user_logins" ("account_id", "created_at", "ip_address", "user_agent", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id"
Эта ошибка возникает в разных областях нашего приложения, но всегда имеет один и тот же номер оператора "a495".
Мы находимся на рельсах 3.2.17, используя postgres, и мы находимся на героике.
Я действительно понятия не имею, почему это происходит, но теперь это начинает происходить чаще.
Любая помощь будет принята с благодарностью.
В трассировке стека рельсов эта ошибка возникает в вызове .prepare. Я смущен, потому что он проверяет ключ sql в коллекции операторов. Если он не существует, он готовит новый... однако, пытаясь его подготовить, он бросает ошибку.
def prepare_statement(sql)
sql_key = sql_key(sql)
unless @statements.key? sql_key
nextkey = @statements.next_key
@connection.prepare nextkey, sql
@statements[sql_key] = nextkey
end
@statements[sql_key]
end