2012-09-14 17 views
32

Il titolo praticamente riassume la mia domanda, ma qui ci sono maggiori informazioni:Come trovare il numero di righe nel database di Heroku

Io corro uno script per importare file in un database Heroku. Ho cominciato a ricevere gli errori:

<class 'django.db.utils.DatabaseError'> current transaction is aborted, commands ignored until end of transaction block

lo script viene eseguito senza problemi sul mio localhost quindi non sto cercando problemi. Recentemente ho ricevuto un'e-mail da heroku affermando che sto "Avvicinandosi al limite di riga per il database dev"

Suppongo di aver raggiunto il limite di riga ma vorrei confermarlo prima di intraprendere ulteriori azioni.

Qualcuno sa come posso trovare il mio numero di righe corrente per l'intero database? (So ​​che posso solo fare un conteggio su ogni tavolo, ma spero ci sia un modo più pulito)

risposta

68

Se avete lo strumento Heroku cli, questo vi darà, tra le altre cose, il numero di righe nel database

heroku pg:info -a your_app 

dato anche sono il tipo di programma, lo stato db, il numero di corrente connessioni, versione postgres, quando è stato creato il db, il numero di righe nel piano, la dimensione dei dati, il numero di tabelle e se il db ha attivate le opzioni fork/follow.

+0

fantastico, heroku ha avuto qualcosa di più facile. molto apprezzato – mea36

+4

Hmm. Sulla mia app questo comando non mi dice il numero di righe. Mi dà tutte le proprietà che hai menzionato, tranne il numero di righe utilizzate e il numero di righe nel mio piano. (So ​​che quest'ultimo è 10 milioni, dal momento che questa app è sul piano "base".) – zem

+0

anche non vedere le righe - utilizzando l'ultima versione 2.35.0 – jpwynn

20

Questo vi darà il conteggio approssimativo di tutte le righe all'interno del database:

SELECT sum(reltuples) from pg_class where relname IN (SELECT c.relname 
FROM pg_catalog.pg_class c 
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
WHERE c.relkind = 'r' 
AND n.nspname <> 'pg_catalog' 
AND n.nspname <> 'information_schema' 
AND n.nspname !~ '^pg_toast' 
AND pg_catalog.pg_table_is_visible(c.oid)); 

Anche se l'errore messaggio indica un errore nel database, probabilmente una violazione del vincolo rispetto a qualcosa con la revoca dei privilegi di inserimento.

+0

grazie per l'istruzione sql. Speravo che Heroku avesse qualcosa di più facile ma questo ha funzionato perfettamente. hai ragione a pensare che si tratti di una violazione dei vincoli ma metà delle importazioni ha funzionato, quindi non penso che sia così. Sono sopra il limite della mia fila quindi spero che questo sia il problema – mea36

Problemi correlati