Référence · xFrameWork_CSHX2 ORM · Codes d'erreur

ERR_DB & ERR_ORM — Codes d'erreur

Registre centralisé de tous les codes d'erreur du framework xFrameWork_CSHX2 ORM. Définis dans xFrameWork_CSHX2_Error et accessibles via xFrameWork_CSHX2_Error.Singleton().pub_GetMessage(nCode, …).

xFrameWork_CSHX2_Error
01
📐 Structure de numérotation

Les codes suivent une numérotation hiérarchique sur 5 chiffres :

PositionSignificationValeur
-2Classe — xFrameWork_CSHX2 ORMFixe
GGGroupe fonctionnel (SELECT=10, INSERT=20, DELETE=30…)2 chiffres
LLSéquence verticale — 99 = premier garde dans le code, descend vers 012 chiffres

Le premier chiffre identifie le domaine fonctionnel. Quatre plages sont actuellement allouées :

PlageDomainePréfixe constantes
-1xxxxxFrameWork_CSHX2_DataBase — DDL, création base, schémaERR_DB_*
-2xxxxxFrameWork_CSHX2 — ORM (SELECT, INSERT, UPDATE, DELETE, LOCK, MongoDB…)ERR_ORM_*
-30xxxxFrameWork_CSHX2_Transactions — COMMIT, ROLLBACK, initialisationERR_TXN_*
-40xxxmth_API_Call (flux API-first) — sérialisation, envoi HTTPERR_API_CALL_*
ℹ️ Substitution de paramètres

Les messages contenant %1, %2… sont formatés par pub_GetMessage(nCode, param1, param2, …). Les paramètres dynamiques remplacent les marqueurs dans l'ordre. Un code inconnu retourne ❌ Code d'erreur inconnu : [code].

02
📋 Codes xFrameWork_CSHX2_DataBase — ERR_DB_*
⚠️ Code générique
CodeConstanteUsage
-999ERR_SQL_INVALID_REQUESTRequête SQL invalide — code générique, utilisé avant l'introduction des codes hiérarchiques
🏗️ DDL TABLES — -110xx
CodeConstanteMessage
-11099ERR_DB_TABLE_PROVIDERProvider non supporté : %1
-11098ERR_DB_TABLE_ABSENTE_ANALYSETable absente de l'analyse HFSQL : %1
-11097ERR_DB_TABLE_VERIF_SQLErreur SQL vérification table : %1
📌 INDEX — -120xx
CodeConstanteMessage
-11299ERR_DB_INDEX_SQLErreur SQL vérification index : %1
▶️ SCRIPT EXECUTION — -130xx
CodeConstanteMessage
-11399ERR_DB_SCRIPT_ECHECÉchec script [%1] table [%2] : %3
🎯 CHECKDATABASE — -140xx
CodeConstanteMessage
-11499ERR_DB_CHECK_PARAM_VIDEParamètre d'appel de la fonction incorrect.
-11498ERR_DB_CHECK_SQLErreur SQL vérification définition table : %1
🗄️ CREATEDATABASE — -150xx
CodeConstanteMessage
-11599ERR_DB_CREATEDB_PROVIDERProvider non supporté pour la création de base de données.
-11598ERR_DB_CREATEDB_SQLErreur SQL création base de données : %1
-11597ERR_DB_CREATEDB_CONNEXIONErreur ouverture connexion : %1
-11596ERR_DB_CREATEDB_CHANGECNXErreur changement connexion : %1
🔬 REVERSEENGINEER — -160xx
CodeConstanteMessage
-11699ERR_DB_RETRO_SQL_TABLESErreur SQL listing tables physiques : %1
-11698ERR_DB_RETRO_SQL_COLONNESErreur SQL listing colonnes physiques : %1
🔄 UPDATEDATABASESCHEMA — -170xx
CodeConstanteMessage
-11799ERR_DB_SCHEMA_LOCKLa base de données est actuellement en maintenance.
-11798ERR_DB_SCHEMA_INTEGRITYErreur d'intégrité dans la base de données. Table InfoSystem.
🔍 CHECKDATABASEEXISTS — -180xx
CodeConstanteMessage
-11899ERR_DB_CHECKEXISTS_PROVIDERProvider non supporté : %1
-11898ERR_DB_CHECKEXISTS_SQLErreur SQL vérification existence base : %1
🔠 INITCASESENSITIVITY — -190xx
CodeConstanteMessage
-11999ERR_DB_CASSE_SQLErreur SQL détection sensibilité casse : %1
💉 INJECTFRAMEWORKCOLUMNS — -1200x
CodeConstanteMessage
-12099ERR_DB_INJECT_TABLE_VIDEInjectFrameworkColumns : nom de table vide
-12098ERR_DB_INJECT_VERIF_SQLErreur vérification colonne %1.%2 : %3
-12097ERR_DB_INJECT_ALTER_SQLErreur ALTER TABLE %1 ADD COLUMN %2 : %3
🔐 ENCRYPT / DECRYPT — -1210x
CodeConstanteMessage
-12199ERR_DB_ENCRYPT_PROVIDERpub_Encrypt : provider non supporté (%1)
-12198ERR_DB_DECRYPT_PROVIDERpub_Decrypt : provider non supporté (%1)
👤 CREATUSER — -1220x / -1230x
CodeConstanteMessage
-12299ERR_DB_USER_LOGIN_VIDEParamètre non valide : sLogin
-12298ERR_DB_USER_PASSWORD_VIDEParamètre non valide : sPassword
-12297ERR_DB_USER_BASE_VIDEParamètre non valide : sNomBase
-12296ERR_DB_USER_PROVIDERProvider non supporté : %1
-12295ERR_DB_USER_SCHEMA_VIDEParamètre non valide : sSchema (requis pour PostgreSQL)
-12399ERR_DB_USER_CREATE_SQLErreur CREATE USER : %1
-12398ERR_DB_USER_GRANT_DMLErreur GRANT DML : %1
-12397ERR_DB_USER_FLUSHErreur FLUSH PRIVILEGES : %1
-12396ERR_DB_USER_GRANT_CONNECTErreur GRANT CONNECT ON DATABASE : %1
-12395ERR_DB_USER_GRANT_SCHEMAErreur GRANT USAGE ON SCHEMA : %1
-12394ERR_DB_USER_GRANT_TABLESErreur GRANT ALL TABLES IN SCHEMA : %1
-12393ERR_DB_USER_DEFAULT_PRIVSErreur ALTER DEFAULT PRIVILEGES : %1
🗄️ META / EXTENSIONS — -1240x
CodeConstanteMessage
-12499ERR_DB_META_INDEX_PROVIDERpub_META_CreateUniqueIndex : provider non supporté
-12498ERR_DB_EXTENSION_SQLErreur vérification extension '%1' : %2
-12497ERR_DB_EXTENSION_MANQUANTEExtension PostgreSQL '%1' manquante — exécuter en superuser : CREATE EXTENSION %1;
🛡️ DICTIONNAIRE / AUDIT NULL — -1250x
CodeConstanteMessage
-12599ERR_DB_DICT_LISTE_VIDEpub_BuildDataDictionnary : HListeFichier a retourné une liste vide
-12598ERR_DB_NULL_INCONSISTENCYAnalyse NULL : %1 incohérence(s) détectée(s).
📋 Codes xFrameWork_CSHX2 ORM — ERR_ORM_*
🔎 SELECT — -210xx
CodeConstanteMessage
-21099ERR_ORM_SELECT_LOCK_INVALIDEType de lock invalide dans m_nClauseLock : %1
-21098ERR_ORM_SELECT_LOCK_SANS_TRANSACTIONTentative de Lock sans transaction active.
-21097ERR_ORM_SELECT_LIMIT_INVALIDELIMIT invalide dans m_nClauseLimit : %1
-21096ERR_ORM_SELECT_OFFSET_INVALIDEOFFSET invalide dans m_nClauseOffset : %1
-21095ERR_ORM_SELECT_ENREG_VERROUILLEEnregistrement verrouillé
-21094ERR_ORM_SELECT_EXCEPTION%1 (message SQL natif)
-21093ERR_ORM_SELECT_JOIN_HLITPREMIER%1 (message SQL natif)
-21092ERR_ORM_SELECT_JOIN_EXCEPTION%1 (message SQL natif)
➕ INSERT — -220xx
CodeConstanteMessage
-22099ERR_ORM_INSERT_BATCH_MODE_JOININSERT batch non supporté en METADATA_MODE_JOIN — utiliser prv_SQL_InsertCore
-22098ERR_ORM_INSERT_PG_INTEGRITEAfin d'assurer l'intégrité de la base de données, votre action a été annulée.
-22097ERR_ORM_INSERT_BLOCAGE_SELECTLe contenu de la classe ne peut pas être enregistré. Vérifiez votre clause SELECT.
-22096ERR_ORM_INSERT_LAST_ID_SQL%1 (message SQL natif)
-22095ERR_ORM_INSERT_LAST_ID_ZEROValeur de l'ID auto-incrémenté incorrecte (LAST_INSERT_ID = 0)
🗑️ DELETE — -230xx
CodeConstanteMessage
-23099ERR_ORM_DELETE_VERROUILLEEnregistrement verrouillé par %1
-23098ERR_ORM_DELETE_PROVIDERProvider non supporté pour la suppression
-23097ERR_ORM_DELETE_TRAD_VERROUILLETraduction verrouillée par %1
-23096ERR_ORM_DELETE_TRAD_PROVIDERProvider non supporté pour la suppression des traductions
🔐 LOCK / UNLOCK — -240xx
CodeConstanteMessage
-24099ERR_ORM_LOCK_VERROUILLEEnregistrement verrouillé par le poste : %1
-24098ERR_ORM_LOCK_INTROUVABLEEnregistrement introuvable (ID=%1, table=%2)
-24097ERR_ORM_UNLOCK_VERROUILLEDéverrouillage refusé — verrou appartenant au poste : %1
📝 FORMULAIRE — -250xx
CodeConstanteMessage
-25099ERR_ORM_FORM_PLUSIEURS_ENREGPlusieurs enregistrements correspondent à cet ID (N° %1). Contactez la maintenance en urgence.
-25098ERR_ORM_FORM_DOUBLON_PKDoublon sur la clé primaire. Contactez la maintenance en urgence.
-25097ERR_ORM_FORM_ENREG_INCONNUL'enregistrement (ID N° %1) est inconnu.
🔢 SÉQUENCE PostgreSQL — -260xx
CodeConstanteMessage
-26099ERR_ORM_SEQ_INTROUVABLEAucune séquence définie pour %1.%2
-26098ERR_ORM_SEQ_ALTER%1 (message SQL natif)
-26097ERR_ORM_SEQ_SELECT_PG_CLASS%1 (message SQL natif)
-26096ERR_ORM_SEQ_SELECT_MAX_PK%1 (message SQL natif)
🗄️ METADATA — -270xx
CodeConstanteMessage
-27099ERR_ORM_META_UPSERT_SQLErreur %1 metadata %2/%3 : %4
-27098ERR_ORM_META_UPSERT_PROVIDERProvider non supporté pour l'opération metadata
-27097ERR_ORM_META_UPSERT_SELECTErreur SELECT metadata %1/%2 : %3
-27096ERR_ORM_META_UPSERT_PK_INVALIDEClé primaire invalide pour l'opération metadata
-27089ERR_ORM_META_DELETE_SQLErreur suppression metadata %1/%2 : %3
-27088ERR_ORM_META_DELETE_PROVIDERProvider non supporté pour la suppression metadata
-27087ERR_ORM_META_DELETE_PK_INVALIDEClé primaire invalide pour la suppression metadata
-27079ERR_ORM_META_FORUPDATE_EXCEPTION%1 (message SQL natif)
-27078ERR_ORM_META_FORUPDATE_SQLErreur verrou metadata %1/%2 : %3
✏️ UPDATE — -280xx
CodeConstanteMessage
-28099ERR_ORM_UPDATE_INTROUVABLEEnregistrement introuvable (ID=%1, table=%2)
-28098ERR_ORM_UPDATE_VERROUILLEEnregistrement verrouillé sur un autre poste
⚙️ DIVERS — -290xx
CodeConstanteMessage
-29099ERR_ORM_TRUNCATE_PARAM_VIDENom de table vide — TRUNCATE impossible
-29098ERR_ORM_TRUNCATE_SQL%1 (message SQL natif)
-29097ERR_ORM_MONGO_INSERTErreur insertion MongoDB : %1
-29096ERR_ORM_MONGO_BUFFER_VIDEArchiveMongo : buffer de sérialisation vide
-29095ERR_ORM_MONGO_NOM_TABLE_VIDEArchiveMongo : nom de table SQL vide
-29094ERR_ORM_RAZ_TYPE_NON_GEREType WLangage non géré en RAZ : %1
📋 Codes xFrameWork_CSHX2_Transactions — ERR_TXN_*
🔄 TRANSACTIONS — -300xx
CodeConstanteMessage
-30099ERR_TXN_LOCK_TIMEOUT_SQLÉchec SET LOCAL lock_timeout (PostgreSQL) : %1
-30098ERR_TXN_INIT_SQLLa transaction SQL n'a pu être initialisée. Afin d'assurer l'intégrité de la base de données votre action a été annulée.
-30097ERR_TXN_COMMIT_SQLÉchec COMMIT (PostgreSQL) : %1
-30096ERR_TXN_COMMIT_ECHECLa transaction SQL n'a pu être validée.
-30095ERR_TXN_ROLLBACK_SQLÉchec ROLLBACK (PostgreSQL) : %1
-30094ERR_TXN_ROLLBACK_ECHECLa transaction SQL n'a pu être annulée.
-30093ERR_TXN_INACTIVEAucune transaction SQL n'est actuellement en cours.
📋 Codes mth_API_Call (flux API-first) — ERR_API_CALL_*
🌐 API-FIRST — -400xx
CodeConstanteDescription techniqueMessage utilisateur (pub_GetMessage)
-40099ERR_API_CALL_URL_VIDEmth_API_Call : m_sAPIUrl non renseignéeL'URL de l'API (m_sAPIUrl) n'est pas renseignée. Configurer ST_ORM_Config.sAPIUrl lors de l'initialisation.
-40098ERR_API_CALL_SERIALISATIONmth_API_Call : erreur sérialisation JSON — %1Erreur lors de la sérialisation de l'objet en JSON : %1
-40097ERR_API_CALL_ENVOImth_API_Call : erreur envoi HTTP — %1Erreur lors de l'envoi de la requête HTTP à l'API : %1
-40096ERR_API_CALL_HTTPmth_API_Call : réponse HTTP %1 — %2L'API a répondu avec le code HTTP %1 : %2
-40095ERR_API_CALL_MODE_APImth_API_Call : appel refusé — le composant s'exécute côté API (m_bModeAPI = Vrai), cette procédure n'a de sens que côté applicatifmth_API_Call() ne peut pas être appelée côté API (m_bModeAPI = Vrai). Cette procédure n'a de sens que côté applicatif.
03
💡 Utilisation
// Récupérer un message avec substitution de paramètres sMessage = xFrameWork_CSHX2_Error.Singleton().pub_GetMessage(ERR_ORM_LOCK_INTROUVABLE, nID, sTable) // → "Enregistrement introuvable (ID=42, table=articles)" // Tester un code spécifique SI nErrorCode = ERR_ORM_SELECT_ENREG_VERROUILLE ALORS // L'enregistrement est verrouillé par un autre poste FIN
ℹ️ Utilisation des constantes

Toujours préférer les constantes nommées (ERR_ORM_SELECT_LOCK_INVALIDE) aux valeurs numériques dans le code applicatif — plus lisibles et résistants aux évolutions du registre. Les constantes sont déclarées dans xFrameWork_CSHX2_Constantes.wl.