Tengo una tabla en una base de datos de postgres que se está utilizando en un entorno de prueba donde tenemos que agregar y soltar varias columnas a la vez. El problema es que postgres tiene un máximo de 1600 columnas, y este conteo incluye columnas caídas. Mi mesa nunca tendrá 1600 columnas "sin soltar" en total, pero con el tiempo se acumula a más de las 1600 con caídas.Borrar el conocimiento postgres de las columnas caídas
He intentado usar VACUUM
y VACUUM FULL
, y he probado la refundición de una columna existente como su propio tipo (ALTER TABLE table ALTER COLUMN anycol TYPE anytype
) para causar postgres para escanear todas las columnas y limpiar la memoria de columnas borradas, pero ninguno de estos restablecen el "número de columna" de postgres.
Sé que esto podría ser resuelto copiando toda la tabla, pero eso tiene sus propios problemas, y es en una pregunta separada.
¿Conoces alguna manera de hacer que el postgres olvide que se le han caído las columnas?
Sé que postgres no fue diseñado para aplicaciones como esta, pero no voy a entrar en por qué elegimos implementarlo de esta manera. Si tiene una herramienta alternativa para usar, me interesaría saberlo, pero aún me gustaría encontrar una solución a esto.
Dijiste que habías probado 'VACUUM' sobre la mesa. ¿Qué pasa con 'VACUUM FULL'? O tal vez, 'tabla ALTER TABLE ALTER COLUMN anycol TYPE anytype;', cambiando una columna al mismo tipo que ya tiene. –
Como ya descubrió, hay al menos dos formas1): CREATE TABLE nuevo AS seleccionar * FROM the_table; cambiar el nombre de las cosas; El otro es pg_dump - t thetable; deja caer la mesa; recree la tabla de los resultados de pg_dump. En AMBOS casos, tendrá que reconstruir las restricciones FK (que es un poco más simple en el segundo caso) – joop