2010-05-06 13 views

cevap

123

Bu hatanın neden kaynaklandığını anladım.

Uygulamam veritabanı bağlantısı açtı ve yürütme için bir SELECT deyimi hazırladı. Bu arada, başka bir betik veritabanı tablosunu değiştirerek yukarıdaki SELECT deyiminde döndürülen sütunlardan birinin veri türünü değiştiriyordu. Üste |

Veritabanı tablosu değiştirildikten sonra uygulamayı yeniden başlatarak bunu çözdüm. Bu, veritabanı bağlantısını sıfırlayarak hazırlanan ifadenin hatasız yürütülmesini sağlar.

+3

Bunu Ruby on Rails 3.1-pre5 ile PostgreSQL 9.0.4'de aldım. Bu ActiveRecord tarafından otomatik olarak ele alınması gerektiği gibi görünüyor, değil mi? –

+3

Evet, umarım ActiveRecord bununla ilgilenir. Yeniden başlatmayı önlemek istiyorsanız, MyModel.reset_column_information ifadesinin kısa vadede işleri düzeltebileceğine inanıyorum. – nertzy

+0

Hala benim için bir değişiklik yok ... – alanjds

1

Bu cevabı, ERROR: cached plan must not change result type numaralı googling ile buraya giren herkes için ekliyorum.

sürücünüzü autosave=conservative ile yapılandırarak bu problemden kaçınabilirsiniz. Bu seçenekle sunucunuzu zıplatmanız veya bağlantı havuzunuzu ya da ortaya çıkmış olabileceğiniz bir çözümünüzü yıkamanız gerekmez.

PostGres 9.6 (AWS RDS) üzerinde yeniden üretildi ve ilk testim, sorunun bu seçenekle tamamen çözüldüğünü gösterdiğini gösteriyor.

Dokümantasyon: https://jdbc.postgresql.org/documentation/head/connect.html#connection-parameters

Sen konunun daha ayrıntılı bilgi ve tarihi için pgjdbcGithub issue 451 bakabilirsiniz.

İlgili konular