MPBX-VERSION-MISMATCH | conflict | Bloqueo optimista: la fila cambió desde que la leyó (el mensaje indica la version esperada y la actual). | Recargue el objeto y vuelva a aplicar su cambio. |
MPBX-PG-DUPLICATE | conflict | Una regla de unicidad rechazó la escritura, por ejemplo un número de extensión ya usado en esta empresa. El mensaje indica la restricción. | Elija otro valor. |
MPBX-PG-REFERENCE | invalid_argument | Una referencia apunta a una fila que no existe en esta empresa, o una fila todavía está referenciada y no se puede eliminar. | Revise el id referenciado y la empresa; elimine primero los dependientes. |
MPBX-PG-CONSTRAINT | invalid_argument | Un valor rompe una regla CHECK o NOT NULL (slug incorrecto, formato de número incorrecto), o se modificó una versión publicada de un flujo de llamada. | Corrija el valor. Las versiones publicadas de los flujos son inmutables: publique una versión nueva. |
MPBX-PG-RETRY | conflict | Falla de serialización o interbloqueo entre transacciones concurrentes. Se puede reintentar. | Reintente la operación. |
MPBX-PG-UNAVAILABLE | unavailable | No se puede contactar a Postgres, se está reiniciando, o el pool no tuvo una conexión libre en 5 s. Se puede reintentar. | Revise el estado de Postgres y postgres.max_connections. |
MPBX-PG-TENANT-DENIED | permission_denied | La seguridad a nivel de fila o un privilegio de tabla rechazó la instrucción (SQLSTATE 42501): una transacción de empresa intentó escribir una fila de otra empresa, mover una fila a otra empresa, o tocar una tabla de toda la instalación (configuración de la instalación, la lista de empresas). También se genera cuando el rol de inicio de sesión no puede cambiar a mpbx_tenant/mpbx_system. | Un error o un ataque en el código que llama: el código de empresa solo debe usar repositorios TenantTx. Si aparece al iniciar, otorgue los roles: GRANT mpbx_tenant, mpbx_system TO <rol de inicio de sesión>; (como superusuario). |
MPBX-PG-QUERY | internal | Cualquier otro error de base de datos. El mensaje contiene el SQLSTATE. | Repórtelo con la línea del registro. |
MPBX-PG-URL-INVALID | config | postgres.url no se interpreta como una URL postgres://. La URL nunca se imprime. | Corrija MPBX__POSTGRES__URL o mpbx.toml. |
MPBX-PG-LOGIN-SCOPE-UNSAFE | config | Al iniciar, un inicio de sesión por ámbito (postgres.tenant_url / postgres.system_url, FU-PBX10-M1) tiene más derechos de los que permite su ámbito: el inicio de sesión de empresa es superusuario, tiene BYPASSRLS, es miembro de mpbx_system o no es miembro de mpbx_tenant; o el inicio de sesión de sistema es superusuario, tiene BYPASSRLS o no es miembro de mpbx_system. | Use los roles mpbx_tenant_login / mpbx_system_login de las migraciones sin cambios (docs/guides/database-logins.md). |
MPBX-PG-MIGRATION-FAILED | internal | Falló una migración y se revirtió su transacción; el esquema no cambió. | Lea la causa en el registro, corrija el estado de la base de datos o repórtelo como error. |
MPBX-PG-MIGRATION-MODIFIED | config | Se editó una migración ya aplicada después de publicarse (la suma de verificación no coincide). Las migraciones solo se agregan. | Entregue el cambio como una migración nueva y restaure el archivo original. |
MPBX-PG-SCHEMA-AHEAD | config | La base de datos tiene migraciones que este binario no conoce: se inició un binario más antiguo contra un esquema más nuevo. No se cambió nada. | Ejecute la versión más nueva, o revierta con la copia de la base de datos anterior a la actualización (mpbx rollback). |
MPBX-PG-MIGRATION-DIRTY | internal | Una ejecución anterior se detuvo a la mitad de una migración no transaccional. | Restaure desde un respaldo. (Todas las migraciones entregadas son transaccionales, así que esto no debería ocurrir.) |