• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

1.7K
Vistas
Error al intentar ejecutar semillas: Knex: se agotó el tiempo de adquisición de una conexión. La piscina probablemente esté llena

Recibo este error cada vez que ejecuto yarn knex seed:run :

Error al ejecutar la semilla "/home/user/path-to-the-file/my-seed.js": Knex: se agotó el tiempo de adquisición de una conexión. Probablemente la piscina esté llena. ¿Te estás perdiendo una llamada .transacting(trx)?

El problema es que le envío el proyecto a otras personas y pueden ejecutarlo normalmente, ya probé todas las respuestas al respecto en Internet, ya no sé qué hacer.

Configuración de mi base de datos:

 const config = Object.freeze({ client: 'pg', pool: { min: 0, max: 5, idleTimeoutMillis: 30000, createTimeoutMillis: 3000, acquireTimeoutMillis: 30000, reapIntervalMillis: 1000, createRetryIntervalMillis: 100, propagateCreateError: false }, connection: Object.freeze({ ...database }) })
  • Versión Knex: "^0.95.8"
  • versión pg: "^8.7.1"
  • Versión de hilo: 1.22.11
  • Versión del nodo: 14.17.4

Ya intenté degradar pg y node, no funcionó, nada funciona.

Hay un problema en el repositorio de Knex que dice que la actualización a la última pg lo resuelve, pero tampoco funcionó: https://github.com/knex/knex/issues/2820

¿Alguien me puede ayudar?

about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Una manera fácil de crear este error es hacer esto:

 const rows = []; for (let i = 0; i < 10000; i++) { rows.push({ name : `foo ${i}` }); } await Promise.all(rows.map(data => knex('user').insert(data)));

Hay infinitas formas de quedarse sin conexiones, pero la mayoría de los casos habituales son abrir demasiadas transacciones simultáneas o ejecutar una gran cantidad de consultas paralelas.

La mejor manera de averiguar la razón por la que sucede es eliminar partes del código problemático hasta que el error ya no ocurra y luego investigar por qué falla ese caso de prueba reducido.

Una buena manera de ver lo que knex está haciendo internamente es configurar la variable de entorno DEBUG=knex:* antes de ejecutar el código para que knex genere información sobre consultas, transacciones y conexiones de grupo mientras se ejecuta el código.

about 3 years ago · Santiago Trujillo Denunciar

0

se enfrentó a un problema similar, subió pg a 8.7.1 y funcionó

también nodo a 16.3.1 y knex a 0.95.11

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda