Postgres: Bir sql dosyası yürütülürken sıfır olmayan çıkış kodu?


34

2 form kullanarak psql'ye çağrı yapan bir kabuk betiği yazıyorum ... biri komut (-c), diğeri dosya (-f).

örneğin psql -c "tablo foo oluştur (bar tamsayı)"

psql -f foobar.sql

Bu formlar arasındaki bir fark, bir hatayla karşılaşılması durumunda (-c) komutunun (-c) çağrısının sıfır olmayan bir çıkış kodu döndürmesidir; buna göre, (-f) dosyası tarafından yapılan bir çağrının her zaman sıfır döndürdüğü görülmektedir.

Bu davranış için bir geçici çözüm olup olmadığını merak ediyorum? (yani, bir dosyayı çalıştırırken bir hata oluşursa sıfırı döndürmeyiniz).

Teşekkürler.

Yanıtlar:


37

Aşağıdaki ifadeyi kullanabilirsiniz.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Bu, foobar.sqldosyanın ON_ERROR_STOPbaşında bile etkin olmayan doğru dönüş kodunu döndürür .


21

Bunu nasıl çözeceğimi öğrendim.

ON_ERROR_STOPDosyanın en üstünde etkinleşmem gerekiyor .

Örnek:

\set ON_ERROR_STOP true


En iyi çözüm için 1 benim değişkeni ayarlamanızı sağlar çünkü içinde ben her zaman doğru çalışır güvenebileceğiniz ve Çalışma zamanı içeriği hakkında endişe zorunda kalmamak için, komut.
Brandon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.