<!-- CANARY: REQ=REQ-GQL-017-STATUS; FEATURE="Docs"; ASPECT=StatusWireMapping; STATUS=TESTED; OWNER=engine; UPDATED=2026-01-16 --> <h2 id="iso-gql-status-codes-reference" class="position-relative d-flex align-items-center group"> <span>ISO GQL Status Codes Reference</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="iso-gql-status-codes-reference" aria-haspopup="dialog" aria-label="Share link: ISO GQL Status Codes Reference"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Geode implements the complete ISO/IEC 39075:2024 GQL status code system (GQLSTATUS) for standardized error reporting and handling across all client libraries and protocols.</p> <h3 id="status-code-format" class="position-relative d-flex align-items-center group"> <span>Status Code Format</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="status-code-format" aria-haspopup="dialog" aria-label="Share link: Status Code Format"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gqlstatus-structure" class="position-relative d-flex align-items-center group"> <span>GQLSTATUS Structure</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gqlstatus-structure" aria-haspopup="dialog" aria-label="Share link: GQLSTATUS Structure"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>All GQL status codes follow the five-character format defined by the ISO standard:</p> <p>``` GQLXX ```</p> <p>Where:</p> <ul> <li><strong>GQL</strong> = Fixed prefix identifying GQL status codes</li> <li><strong>XX</strong> = Two-character code indicating category and specific condition</li> </ul> <h4 id="status-code-categories" class="position-relative d-flex align-items-center group"> <span>Status Code Categories</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="status-code-categories" aria-haspopup="dialog" aria-label="Share link: Status Code Categories"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>``` 00 - Success 01 - Warning 02 - No Data 21 - Cardinality Violation 22 - Data Exception 23 - Integrity Constraint Violation 24 - Invalid Transaction State 25 - Invalid Transaction Termination 27 - Transaction Rollback 28 - Invalid Authorization Specification 2E - Invalid Connection 42 - Syntax Error or Access Rule Violation ```</p> <h3 id="success-codes" class="position-relative d-flex align-items-center group"> <span>Success Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="success-codes" aria-haspopup="dialog" aria-label="Share link: Success Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql00---successful-completion" class="position-relative d-flex align-items-center group"> <span>GQL00 - Successful Completion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql00---successful-completion" aria-haspopup="dialog" aria-label="Share link: GQL00 - Successful Completion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Code</strong>: `GQL00` <strong>Category</strong>: Success <strong>Meaning</strong>: Query or operation completed successfully with no errors or warnings</p> <p><strong>Example</strong>: ```gql MATCH (p:Person {id: 1}) RETURN p.name ```</p> <p><strong>Response</strong>: ```json { &ldquo;status&rdquo;: &ldquo;GQL00&rdquo;, &ldquo;message&rdquo;: &ldquo;Successful completion&rdquo;, &ldquo;rows&rdquo;: [{&ldquo;name&rdquo;: &ldquo;Alice&rdquo;}] } ```</p> <p><strong>Handling</strong>: No action required, proceed with result processing.</p> <h3 id="warning-codes" class="position-relative d-flex align-items-center group"> <span>Warning Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="warning-codes" aria-haspopup="dialog" aria-label="Share link: Warning Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql01---warning" class="position-relative d-flex align-items-center group"> <span>GQL01 - Warning</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql01---warning" aria-haspopup="dialog" aria-label="Share link: GQL01 - Warning"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Code</strong>: `GQL01` <strong>Subcodes</strong>: Multiple warning conditions</p> <p><strong>Common Warnings</strong>:</p> <h5 id="gql01001---cursor-operation-conflict" class="position-relative d-flex align-items-center group"> <span>GQL01001 - Cursor Operation Conflict</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql01001---cursor-operation-conflict" aria-haspopup="dialog" aria-label="Share link: GQL01001 - Cursor Operation Conflict"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Cursor operation conflict with concurrent modification</p> <p><strong>Example Scenario</strong>: ```gql &ndash; Transaction 1 START TRANSACTION DECLARE cursor1 CURSOR FOR MATCH (p:Person) RETURN p OPEN cursor1</p> <p>&ndash; Transaction 2 modifies data CREATE (p:Person {name: &lsquo;NewPerson&rsquo;})</p> <p>&ndash; Transaction 1 continues FETCH NEXT FROM cursor1 &ndash; Warning: GQL01001 ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Re-execute query if data consistency is critical</li> <li>Accept warning if cursor data can be stale</li> <li>Consider higher isolation level for transaction</li> </ul> <h5 id="gql01002---disconnect-error" class="position-relative d-flex align-items-center group"> <span>GQL01002 - Disconnect Error</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql01002---disconnect-error" aria-haspopup="dialog" aria-label="Share link: GQL01002 - Disconnect Error"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Disconnect error occurred but operation completed</p> <p><strong>Handling</strong>:</p> <ul> <li>Verify operation completion</li> <li>Re-establish connection for subsequent operations</li> <li>Check connection pool health</li> </ul> <h3 id="no-data-codes" class="position-relative d-flex align-items-center group"> <span>No Data Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="no-data-codes" aria-haspopup="dialog" aria-label="Share link: No Data Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql02---no-data" class="position-relative d-flex align-items-center group"> <span>GQL02 - No Data</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql02---no-data" aria-haspopup="dialog" aria-label="Share link: GQL02 - No Data"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Code</strong>: `GQL02` <strong>Meaning</strong>: Query executed successfully but returned no rows</p> <p><strong>Example</strong>: ```gql MATCH (p:Person {email: &rsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) RETURN p ```</p> <p><strong>Response</strong>: ```json { &ldquo;status&rdquo;: &ldquo;GQL02&rdquo;, &ldquo;message&rdquo;: &ldquo;No data found&rdquo;, &ldquo;rows&rdquo;: [] } ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Not an error condition</li> <li>Check query predicates if data was expected</li> <li>Differentiate from GQL00 (success with data)</li> </ul> <h4 id="gql02001---no-additional-data" class="position-relative d-flex align-items-center group"> <span>GQL02001 - No Additional Data</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql02001---no-additional-data" aria-haspopup="dialog" aria-label="Share link: GQL02001 - No Additional Data"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Meaning</strong>: No additional result sets available</p> <p><strong>Example Scenario</strong>: ```gql &ndash; After consuming all result pages FETCH NEXT FROM cursor1 &ndash; GQL02001 ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Normal end-of-results indicator</li> <li>Close cursor or complete pagination</li> </ul> <h3 id="data-exception-codes" class="position-relative d-flex align-items-center group"> <span>Data Exception Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-exception-codes" aria-haspopup="dialog" aria-label="Share link: Data Exception Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql22---data-exception" class="position-relative d-flex align-items-center group"> <span>GQL22 - Data Exception</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22---data-exception" aria-haspopup="dialog" aria-label="Share link: GQL22 - Data Exception"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Category</strong>: Data validation and type errors</p> <h5 id="gql22001---string-data-right-truncation" class="position-relative d-flex align-items-center group"> <span>GQL22001 - String Data Right Truncation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22001---string-data-right-truncation" aria-haspopup="dialog" aria-label="Share link: GQL22001 - String Data Right Truncation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: String value truncated to fit field length</p> <p><strong>Example</strong>: ```gql CREATE (p:Person {name: &lsquo;VeryLongNameThatExceedsLimit&hellip;&rsquo;}) &ndash; If name field has max length of 50 characters ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Validate input length before insertion</li> <li>Increase field size if legitimate use case</li> <li>Truncate data explicitly in application</li> </ul> <h5 id="gql22003---numeric-value-out-of-range" class="position-relative d-flex align-items-center group"> <span>GQL22003 - Numeric Value Out of Range</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22003---numeric-value-out-of-range" aria-haspopup="dialog" aria-label="Share link: GQL22003 - Numeric Value Out of Range"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Numeric value exceeds data type bounds</p> <p><strong>Example</strong>: ```gql CREATE (p:Product {quantity: 9999999999999999}) &ndash; If quantity is INT32 ```</p> <p><strong>Handling</strong>: ```go // Go example if quantity &gt; math.MaxInt32 { return fmt.Errorf(&ldquo;quantity exceeds maximum: %d&rdquo;, math.MaxInt32) } ```</p> <h5 id="gql22007---invalid-datetime-format" class="position-relative d-flex align-items-center group"> <span>GQL22007 - Invalid Datetime Format</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22007---invalid-datetime-format" aria-haspopup="dialog" aria-label="Share link: GQL22007 - Invalid Datetime Format"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Datetime string doesn&rsquo;t match expected format</p> <p><strong>Example</strong>: ```gql CREATE (e:Event {timestamp: &lsquo;2024-13-45T25:99:99&rsquo;}) &ndash; Invalid ```</p> <p><strong>Valid Formats</strong>: ```gql &ndash; ISO 8601 formats &lsquo;2024-01-15&rsquo; &ndash; Date &lsquo;14:30:00&rsquo; &ndash; Time &lsquo;2024-01-15T14:30:00&rsquo; &ndash; DateTime &lsquo;2024-01-15T14:30:00Z&rsquo; &ndash; DateTime with UTC &lsquo;2024-01-15T14:30:00-05:00&rsquo; &ndash; DateTime with timezone ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Validate datetime strings before insertion</li> <li>Use ISO 8601 format consistently</li> <li>Consider using datetime functions</li> </ul> <h5 id="gql22008---datetime-field-overflow" class="position-relative d-flex align-items-center group"> <span>GQL22008 - Datetime Field Overflow</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22008---datetime-field-overflow" aria-haspopup="dialog" aria-label="Share link: GQL22008 - Datetime Field Overflow"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Datetime calculation resulted in overflow</p> <p><strong>Example</strong>: ```gql RETURN datetime(&lsquo;2024-01-01&rsquo;) + duration(&lsquo;P99999Y&rsquo;) ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Validate duration values before arithmetic</li> <li>Check result bounds after calculations</li> </ul> <h5 id="gql22012---division-by-zero" class="position-relative d-flex align-items-center group"> <span>GQL22012 - Division by Zero</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22012---division-by-zero" aria-haspopup="dialog" aria-label="Share link: GQL22012 - Division by Zero"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Attempted division or modulo by zero</p> <p><strong>Example</strong>: ```gql MATCH (p:Product) RETURN p.price, p.price / p.quantity AS unit_price &ndash; If quantity = 0 ```</p> <p><strong>Handling</strong>: ```gql &ndash; Add guard clause MATCH (p:Product) WHERE p.quantity &gt; 0 RETURN p.price, p.price / p.quantity AS unit_price ```</p> <p>```python</p> <h2 id="python-example" class="position-relative d-flex align-items-center group"> <span>Python example</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python-example" aria-haspopup="dialog" aria-label="Share link: Python example"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><p>unit_price = price / quantity if quantity != 0 else None ```</p> <h5 id="gql22018---invalid-character-value-for-cast" class="position-relative d-flex align-items-center group"> <span>GQL22018 - Invalid Character Value for Cast</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22018---invalid-character-value-for-cast" aria-haspopup="dialog" aria-label="Share link: GQL22018 - Invalid Character Value for Cast"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: String cannot be cast to target type</p> <p><strong>Example</strong>: ```gql RETURN toInteger(&rsquo;not_a_number&rsquo;) &ndash; GQL22018 ```</p> <p><strong>Handling</strong>: ```gql &ndash; Validate before casting RETURN CASE WHEN value =~ &lsquo;^[0-9]+$&rsquo; THEN toInteger(value) ELSE NULL END ```</p> <h5 id="gql22023---invalid-parameter-value" class="position-relative d-flex align-items-center group"> <span>GQL22023 - Invalid Parameter Value</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql22023---invalid-parameter-value" aria-haspopup="dialog" aria-label="Share link: GQL22023 - Invalid Parameter Value"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Parameter value invalid for operation</p> <p><strong>Example</strong>: ```gql MATCH (p:Person) WHERE p.age &gt; $age &ndash; $age = &rsquo;twenty&rsquo; (string instead of number) RETURN p ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Type-check parameters before query execution</li> <li>Use strongly-typed parameter binding</li> <li>Validate input at application boundary</li> </ul> <h3 id="integrity-constraint-violations" class="position-relative d-flex align-items-center group"> <span>Integrity Constraint Violations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="integrity-constraint-violations" aria-haspopup="dialog" aria-label="Share link: Integrity Constraint Violations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql23---integrity-constraint-violation" class="position-relative d-flex align-items-center group"> <span>GQL23 - Integrity Constraint Violation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql23---integrity-constraint-violation" aria-haspopup="dialog" aria-label="Share link: GQL23 - Integrity Constraint Violation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="gql23000---integrity-constraint-violation-general" class="position-relative d-flex align-items-center group"> <span>GQL23000 - Integrity Constraint Violation (General)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql23000---integrity-constraint-violation-general" aria-haspopup="dialog" aria-label="Share link: GQL23000 - Integrity Constraint Violation (General)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Unspecified integrity constraint violated</p> <p><strong>Example</strong>: ```gql CREATE (p:Person {id: 1, email: &lsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) CREATE (p:Person {id: 1, email: &lsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) &ndash; If id has UNIQUE constraint ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Check constraint definitions</li> <li>Validate data before insertion</li> <li>Handle duplicate key scenarios</li> </ul> <h5 id="gql23001---restrict-violation" class="position-relative d-flex align-items-center group"> <span>GQL23001 - Restrict Violation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql23001---restrict-violation" aria-haspopup="dialog" aria-label="Share link: GQL23001 - Restrict Violation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Foreign key constraint prevents deletion</p> <p><strong>Example</strong>: ```gql &ndash; Person has relationships to Orders DELETE (p:Person {id: 1}) &ndash; GQL23001 if ON DELETE RESTRICT is enforced ```</p> <p><strong>Handling</strong>: ```gql &ndash; Use DETACH DELETE to remove relationships DETACH DELETE (p:Person {id: 1})</p> <p>&ndash; Or delete relationships first MATCH (p:Person {id: 1})-[r]-() DELETE r, p ```</p> <h5 id="gql23505---unique-violation" class="position-relative d-flex align-items-center group"> <span>GQL23505 - Unique Violation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql23505---unique-violation" aria-haspopup="dialog" aria-label="Share link: GQL23505 - Unique Violation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Unique constraint violated</p> <p><strong>Example</strong>: ```gql CREATE (u:User {email: &lsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) CREATE (u:User {email: &lsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) &ndash; GQL23505 ```</p> <p><strong>Handling</strong>: ```gql &ndash; Use MERGE for upsert semantics MERGE (u:User {email: &lsquo;<a href="mailto:[email protected]" >[email protected]</a> &rsquo;}) ON CREATE SET u.created = datetime() ON MATCH SET u.accessed = datetime() ```</p> <p>```python</p> <h2 id="python-error-handling" class="position-relative d-flex align-items-center group"> <span>Python error handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python-error-handling" aria-haspopup="dialog" aria-label="Share link: Python error handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><p>from geode_client.exceptions import ConstraintViolationError</p> <p>try: await conn.execute( &ldquo;CREATE (u:User {email: $email})&rdquo;, {&ldquo;email&rdquo;: email} ) except ConstraintViolationError as e: if e.status_code == &ldquo;GQL23505&rdquo;: # Handle duplicate email logger.warning(f&quot;Email already exists: {email}&quot;) ```</p> <h5 id="gql23514---check-constraint-violation" class="position-relative d-flex align-items-center group"> <span>GQL23514 - Check Constraint Violation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql23514---check-constraint-violation" aria-haspopup="dialog" aria-label="Share link: GQL23514 - Check Constraint Violation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: CHECK constraint condition not satisfied</p> <p><strong>Example</strong>: ```gql &ndash; Assuming CHECK constraint: age &gt;= 0 AND age &lt;= 150 CREATE (p:Person {name: &lsquo;Alice&rsquo;, age: 200}) &ndash; GQL23514 ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Validate data against constraint rules before insertion</li> <li>Review constraint definitions for reasonableness</li> <li>Provide clear error messages to users</li> </ul> <h3 id="transaction-state-errors" class="position-relative d-flex align-items-center group"> <span>Transaction State Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-state-errors" aria-haspopup="dialog" aria-label="Share link: Transaction State Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql24---invalid-transaction-state" class="position-relative d-flex align-items-center group"> <span>GQL24 - Invalid Transaction State</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql24---invalid-transaction-state" aria-haspopup="dialog" aria-label="Share link: GQL24 - Invalid Transaction State"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="gql24000---invalid-transaction-state-general" class="position-relative d-flex align-items-center group"> <span>GQL24000 - Invalid Transaction State (General)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql24000---invalid-transaction-state-general" aria-haspopup="dialog" aria-label="Share link: GQL24000 - Invalid Transaction State (General)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Operation not valid in current transaction state</p> <p><strong>Example</strong>: ```gql COMMIT &ndash; No active transaction ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Track transaction state in application</li> <li>Always pair BEGIN with COMMIT/ROLLBACK</li> <li>Use transaction context managers</li> </ul> <p>```python</p> <h2 id="python---safe-transaction-handling" class="position-relative d-flex align-items-center group"> <span>Python - Safe transaction handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python---safe-transaction-handling" aria-haspopup="dialog" aria-label="Share link: Python - Safe transaction handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><p>async with db.connection() as tx: await tx.begin() await tx.execute(&ldquo;CREATE (p:Person {name: &lsquo;Alice&rsquo;})&rdquo;) # Automatic commit on success, rollback on exception ```</p> <h5 id="gql25000---invalid-transaction-termination" class="position-relative d-flex align-items-center group"> <span>GQL25000 - Invalid Transaction Termination</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql25000---invalid-transaction-termination" aria-haspopup="dialog" aria-label="Share link: GQL25000 - Invalid Transaction Termination"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Cannot commit or rollback in current state</p> <p><strong>Example</strong>: ```gql START TRANSACTION &ndash; Connection lost COMMIT &ndash; GQL25000 ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Implement connection retry logic</li> <li>Re-establish transaction after connection recovery</li> <li>Use savepoints for partial rollback</li> </ul> <h4 id="gql27---transaction-rollback" class="position-relative d-flex align-items-center group"> <span>GQL27 - Transaction Rollback</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql27---transaction-rollback" aria-haspopup="dialog" aria-label="Share link: GQL27 - Transaction Rollback"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="gql27000---transaction-rollback-general" class="position-relative d-flex align-items-center group"> <span>GQL27000 - Transaction Rollback (General)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql27000---transaction-rollback-general" aria-haspopup="dialog" aria-label="Share link: GQL27000 - Transaction Rollback (General)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Transaction rolled back due to error or deadlock</p> <p><strong>Example</strong>: ```gql START TRANSACTION CREATE (p:Person {id: 1}) &ndash; Deadlock detected with concurrent transaction &ndash; GQL27000 - Transaction rolled back ```</p> <p><strong>Handling</strong>: ```python</p> <h2 id="python---retry-on-deadlock" class="position-relative d-flex align-items-center group"> <span>Python - Retry on deadlock</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python---retry-on-deadlock" aria-haspopup="dialog" aria-label="Share link: Python - Retry on deadlock"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><p>max_retries = 3 for attempt in range(max_retries): try: async with db.connection() as tx: await tx.begin() await tx.execute(query, params) break # Success except TransactionRollbackError as e: if &ldquo;deadlock&rdquo; in str(e).lower() and attempt &lt; max_retries - 1: await asyncio.sleep(0.1 * (2 ** attempt)) # Exponential backoff else: raise ```</p> <h3 id="syntax-and-access-errors" class="position-relative d-flex align-items-center group"> <span>Syntax and Access Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="syntax-and-access-errors" aria-haspopup="dialog" aria-label="Share link: Syntax and Access Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql42---syntax-error-or-access-rule-violation" class="position-relative d-flex align-items-center group"> <span>GQL42 - Syntax Error or Access Rule Violation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql42---syntax-error-or-access-rule-violation" aria-haspopup="dialog" aria-label="Share link: GQL42 - Syntax Error or Access Rule Violation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="gql42000---syntax-error-or-access-violation-general" class="position-relative d-flex align-items-center group"> <span>GQL42000 - Syntax Error or Access Violation (General)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql42000---syntax-error-or-access-violation-general" aria-haspopup="dialog" aria-label="Share link: GQL42000 - Syntax Error or Access Violation (General)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Query syntax error or insufficient privileges</p> <p><strong>Example</strong>: ```gql MATCH (p:Person WHERE p.age &gt; 25 RETURN p &ndash; Missing ) ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Validate query syntax before execution</li> <li>Use query builder libraries to prevent syntax errors</li> <li>Check error message for specific syntax issue</li> </ul> <h5 id="gql42501---insufficient-privilege" class="position-relative d-flex align-items-center group"> <span>GQL42501 - Insufficient Privilege</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql42501---insufficient-privilege" aria-haspopup="dialog" aria-label="Share link: GQL42501 - Insufficient Privilege"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: User lacks required permissions</p> <p><strong>Example</strong>: ```gql &ndash; User without CREATE permission CREATE (p:Person {name: &lsquo;Alice&rsquo;}) &ndash; GQL42501 ```</p> <p><strong>Handling</strong>: ```python from geode_client.exceptions import InsufficientPrivilegeError</p> <p>try: await conn.execute(&ldquo;CREATE (p:Person {name: &lsquo;Alice&rsquo;})&rdquo;) except InsufficientPrivilegeError as e: logger.error(f&quot;Permission denied: {e.message}&quot;) # Request access or use different credentials ```</p> <h5 id="gql42601---invalid-grant-operation" class="position-relative d-flex align-items-center group"> <span>GQL42601 - Invalid Grant Operation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql42601---invalid-grant-operation" aria-haspopup="dialog" aria-label="Share link: GQL42601 - Invalid Grant Operation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Cannot grant specified privilege</p> <p><strong>Example</strong>: ```gql GRANT CREATE ON GRAPH production TO user1 &ndash; If current user cannot grant this privilege ```</p> <h5 id="gql42704---undefined-database-object" class="position-relative d-flex align-items-center group"> <span>GQL42704 - Undefined Database Object</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql42704---undefined-database-object" aria-haspopup="dialog" aria-label="Share link: GQL42704 - Undefined Database Object"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Referenced object does not exist</p> <p><strong>Example</strong>: ```gql USE GRAPH nonexistent_graph &ndash; GQL42704 ```</p> <p><strong>Handling</strong>:</p> <ul> <li>Verify database object names before use</li> <li>Create objects if they don&rsquo;t exist</li> <li>Handle missing objects gracefully</li> </ul> <h3 id="connection-errors" class="position-relative d-flex align-items-center group"> <span>Connection Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-errors" aria-haspopup="dialog" aria-label="Share link: Connection Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="gql2e---invalid-connection" class="position-relative d-flex align-items-center group"> <span>GQL2E - Invalid Connection</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql2e---invalid-connection" aria-haspopup="dialog" aria-label="Share link: GQL2E - Invalid Connection"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="gql2e000---connection-exception-general" class="position-relative d-flex align-items-center group"> <span>GQL2E000 - Connection Exception (General)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql2e000---connection-exception-general" aria-haspopup="dialog" aria-label="Share link: GQL2E000 - Connection Exception (General)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Connection-level error occurred</p> <p><strong>Example Scenarios</strong>:</p> <ul> <li>Network timeout</li> <li>Connection pool exhausted</li> <li>Server unreachable</li> </ul> <p><strong>Handling</strong>: ```go // Go - Connection retry with backoff func connectWithRetry(url string, maxRetries int) (*gql.DB, error) { var db *gql.DB var err error</p> <pre><code>for i := 0; i &lt; maxRetries; i++ { db, err = gql.Open(url) if err == nil { return db, nil } if errors.IsConnectionError(err) { backoff := time.Duration(100*math.Pow(2, float64(i))) * time.Millisecond time.Sleep(backoff) continue } return nil, err // Non-retryable error } return nil, fmt.Errorf(&quot;failed after %d retries: %w&quot;, maxRetries, err) </code></pre> <p>} ```</p> <h5 id="gql2e001---connection-does-not-exist" class="position-relative d-flex align-items-center group"> <span>GQL2E001 - Connection Does Not Exist</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql2e001---connection-does-not-exist" aria-haspopup="dialog" aria-label="Share link: GQL2E001 - Connection Does Not Exist"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><p><strong>Meaning</strong>: Connection closed or never established</p> <p><strong>Handling</strong>:</p> <ul> <li>Check connection status before operations</li> <li>Implement connection health checks</li> <li>Use connection pooling for reliability</li> </ul> <p>```python</p> <h2 id="python---connection-health-check" class="position-relative d-flex align-items-center group"> <span>Python - Connection health check</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python---connection-health-check" aria-haspopup="dialog" aria-label="Share link: Python - Connection health check"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><p>async def ensure_connection(db): try: async with db.connection() as conn: await conn.ping() except ConnectionError: # Re-establish connection await db.reconnect() ```</p> <h3 id="error-handling-best-practices" class="position-relative d-flex align-items-center group"> <span>Error Handling Best Practices</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-handling-best-practices" aria-haspopup="dialog" aria-label="Share link: Error Handling Best Practices"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="1-categorize-errors-by-severity" class="position-relative d-flex align-items-center group"> <span>1. Categorize Errors by Severity</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="1-categorize-errors-by-severity" aria-haspopup="dialog" aria-label="Share link: 1. Categorize Errors by Severity"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```python from geode_client.exceptions import GeodeError</p> <p>def handle_error(e: GeodeError): if e.status_code.startswith(&ldquo;GQL00&rdquo;): # Success - no handling needed pass elif e.status_code.startswith(&ldquo;GQL01&rdquo;): # Warning - log and continue logger.warning(f&quot;Warning: {e.message}&quot;) elif e.status_code.startswith(&ldquo;GQL02&rdquo;): # No data - expected condition return [] elif e.status_code.startswith(&ldquo;GQL22&rdquo;): # Data exception - validation error logger.error(f&quot;Invalid data: {e.message}&quot;) raise ValueError(e.message) elif e.status_code.startswith(&ldquo;GQL23&rdquo;): # Constraint violation logger.error(f&quot;Constraint violated: {e.message}&quot;) raise IntegrityError(e.message) elif e.status_code.startswith(&ldquo;GQL27&rdquo;): # Transaction rollback - retry logger.info(f&quot;Transaction rolled back: {e.message}&quot;) return &ldquo;RETRY&rdquo; elif e.status_code.startswith(&ldquo;GQL42&rdquo;): # Syntax or permission error logger.error(f&quot;Query error: {e.message}&quot;) raise SyntaxError(e.message) else: # Unknown error logger.exception(f&quot;Unexpected error: {e.message}&quot;) raise ```</p> <h4 id="2-implement-retry-logic-for-transient-errors" class="position-relative d-flex align-items-center group"> <span>2. Implement Retry Logic for Transient Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="2-implement-retry-logic-for-transient-errors" aria-haspopup="dialog" aria-label="Share link: 2. Implement Retry Logic for Transient Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```go // Go - Retry wrapper func executeWithRetry(ctx context.Context, db *gql.DB, query string, params map[string]interface{}, maxRetries int) (*gql.Page, error) { var page *gql.Page var err error</p> <pre><code>for attempt := 0; attempt &lt; maxRetries; attempt++ { conn, err := db.Connect(ctx) if err != nil { if errors.IsConnectionError(err) &amp;&amp; attempt &lt; maxRetries-1 { backoff := time.Duration(100 * math.Pow(2, float64(attempt))) * time.Millisecond time.Sleep(backoff) continue } return nil, err } defer conn.Close() page, _, err = conn.Query(ctx, query, params, 100) if err == nil { return page, nil } if errors.IsTransactionRollback(err) &amp;&amp; attempt &lt; maxRetries-1 { backoff := time.Duration(50 * math.Pow(2, float64(attempt))) * time.Millisecond time.Sleep(backoff) continue } return nil, err } return nil, fmt.Errorf(&quot;failed after %d attempts: %w&quot;, maxRetries, err) </code></pre> <p>} ```</p> <h4 id="3-log-errors-with-context" class="position-relative d-flex align-items-center group"> <span>3. Log Errors with Context</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="3-log-errors-with-context" aria-haspopup="dialog" aria-label="Share link: 3. Log Errors with Context"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```python import logging import json</p> <p>logger = logging.getLogger(<strong>name</strong>)</p> <p>async def execute_query_with_logging(conn, query, params): try: result = await conn.query(query, params) return result except GeodeError as e: logger.error( &ldquo;Query execution failed&rdquo;, extra={ &ldquo;status_code&rdquo;: e.status_code, &ldquo;message&rdquo;: e.message, &ldquo;query&rdquo;: query, &ldquo;params&rdquo;: json.dumps(params), &ldquo;stack_trace&rdquo;: str(e) } ) raise ```</p> <h4 id="4-validate-input-before-execution" class="position-relative d-flex align-items-center group"> <span>4. Validate Input Before Execution</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="4-validate-input-before-execution" aria-haspopup="dialog" aria-label="Share link: 4. Validate Input Before Execution"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```rust use geode_client::{Client, Value};</p> <p>fn validate_person(name: &amp;str, age: i32, email: &amp;str) -&gt; Result&lt;(), String&gt; { if name.is_empty() { return Err(&ldquo;Name cannot be empty&rdquo;.to_string()); } if age &lt; 0 || age &gt; 150 { return Err(format!(&ldquo;Invalid age: {}&rdquo;, age)); } if !email.contains(&rsquo;@&rsquo;) { return Err(format!(&ldquo;Invalid email: {}&rdquo;, email)); } Ok(()) }</p> <p>async fn create_person( client: &amp;Client, name: &amp;str, age: i32, email: &amp;str ) -&gt; Result&lt;(), Box<dyn std::error::Error>&gt; { // Validate before execution validate_person(name, age, email)?;</p> <pre><code>let mut conn = client.connect().await?; conn.execute( &quot;CREATE (p:Person {name: $name, age: $age, email: $email})&quot;, vec![ (&quot;name&quot;, Value::from(name)), (&quot;age&quot;, Value::from(age)), (&quot;email&quot;, Value::from(email)), ] ).await?; Ok(()) </code></pre> <p>} ```</p> <h3 id="status-code-quick-reference" class="position-relative d-flex align-items-center group"> <span>Status Code Quick Reference</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="status-code-quick-reference" aria-haspopup="dialog" aria-label="Share link: Status Code Quick Reference"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="by-category" class="position-relative d-flex align-items-center group"> <span>By Category</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="by-category" aria-haspopup="dialog" aria-label="Share link: By Category"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Category</th> <th>Code Range</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>Success</td> <td>GQL00</td> <td>Successful completion</td> </tr> <tr> <td>Warning</td> <td>GQL01</td> <td>Warning conditions</td> </tr> <tr> <td>No Data</td> <td>GQL02</td> <td>No data found</td> </tr> <tr> <td>Data Exception</td> <td>GQL22</td> <td>Data validation errors</td> </tr> <tr> <td>Constraint Violation</td> <td>GQL23</td> <td>Integrity constraints</td> </tr> <tr> <td>Transaction State</td> <td>GQL24</td> <td>Invalid transaction state</td> </tr> <tr> <td>Transaction Termination</td> <td>GQL25</td> <td>Cannot commit/rollback</td> </tr> <tr> <td>Rollback</td> <td>GQL27</td> <td>Transaction rolled back</td> </tr> <tr> <td>Syntax/Access</td> <td>GQL42</td> <td>Syntax or permission errors</td> </tr> <tr> <td>Connection</td> <td>GQL2E</td> <td>Connection errors</td> </tr> </tbody> </table> <h4 id="common-codes" class="position-relative d-flex align-items-center group"> <span>Common Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="common-codes" aria-haspopup="dialog" aria-label="Share link: Common Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Code</th> <th>Meaning</th> <th>Action</th> </tr> </thead> <tbody> <tr> <td>GQL00</td> <td>Success</td> <td>Continue processing</td> </tr> <tr> <td>GQL01</td> <td>Warning</td> <td>Log and continue</td> </tr> <tr> <td>GQL02</td> <td>No data</td> <td>Handle empty result</td> </tr> <tr> <td>GQL22003</td> <td>Numeric overflow</td> <td>Validate input range</td> </tr> <tr> <td>GQL22007</td> <td>Invalid datetime</td> <td>Check format</td> </tr> <tr> <td>GQL22012</td> <td>Division by zero</td> <td>Add guard clause</td> </tr> <tr> <td>GQL23505</td> <td>Unique violation</td> <td>Use MERGE or handle duplicate</td> </tr> <tr> <td>GQL27000</td> <td>Deadlock</td> <td>Retry with backoff</td> </tr> <tr> <td>GQL42000</td> <td>Syntax error</td> <td>Fix query syntax</td> </tr> <tr> <td>GQL42501</td> <td>Insufficient privilege</td> <td>Check permissions</td> </tr> <tr> <td>GQL2E000</td> <td>Connection error</td> <td>Retry connection</td> </tr> </tbody> </table> <h3 id="troubleshooting-guide" class="position-relative d-flex align-items-center group"> <span>Troubleshooting Guide</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="troubleshooting-guide" aria-haspopup="dialog" aria-label="Share link: Troubleshooting Guide"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="connection-issues" class="position-relative d-flex align-items-center group"> <span>Connection Issues</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="connection-issues" aria-haspopup="dialog" aria-label="Share link: Connection Issues"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Problem</strong>: GQL2E000 - Connection Exception</p> <p><strong>Diagnostic Steps</strong>:</p> <ol> <li>Verify server is running: `geode status`</li> <li>Check network connectivity: `ping geode-server`</li> <li>Verify QUIC port (3141) is accessible</li> <li>Check connection pool status</li> <li>Review server logs for errors</li> </ol> <p><strong>Solutions</strong>:</p> <ul> <li>Restart Geode server</li> <li>Check firewall rules for UDP port 3141</li> <li>Increase connection pool size</li> <li>Implement connection retry logic</li> </ul> <h4 id="query-performance" class="position-relative d-flex align-items-center group"> <span>Query Performance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-performance" aria-haspopup="dialog" aria-label="Share link: Query Performance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Problem</strong>: Slow queries or timeouts</p> <p><strong>Diagnostic Steps</strong>:</p> <ol> <li>Use EXPLAIN to analyze query plan</li> <li>Check index usage</li> <li>Review query complexity</li> <li>Monitor server resources</li> </ol> <p><strong>Solutions</strong>: ```gql &ndash; Add appropriate indexes CREATE INDEX ON :Person(email)</p> <p>&ndash; Optimize query with LIMIT MATCH (p:Person) WHERE p.age &gt; 25 RETURN p.name, p.email ORDER BY p.name LIMIT 100 &ndash; Add limit for large result sets</p> <p>&ndash; Use PROFILE to measure performance PROFILE MATCH (p:Person)-[:KNOWS]-&gt;(f) RETURN p.name, count(f) AS friend_count ```</p> <h4 id="transaction-deadlocks" class="position-relative d-flex align-items-center group"> <span>Transaction Deadlocks</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-deadlocks" aria-haspopup="dialog" aria-label="Share link: Transaction Deadlocks"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Problem</strong>: GQL27000 - Transaction Rollback (Deadlock)</p> <p><strong>Prevention</strong>:</p> <ul> <li>Access resources in consistent order</li> <li>Keep transactions short</li> <li>Use appropriate isolation levels</li> <li>Implement retry logic with exponential backoff</li> </ul> <p><strong>Example</strong>: ```python import asyncio from geode_client import Client, QueryError</p> <p>async def transfer_with_retry(from_id, to_id, amount, max_retries=3): client = Client(host=&ldquo;localhost&rdquo;, port=3141)</p> <pre><code>for attempt in range(max_retries): async with client.connection() as conn: try: await conn.begin() if from_id &lt; to_id: await conn.query(&quot;MATCH (a:Account {id: $id}) RETURN a&quot;, {&quot;id&quot;: from_id}) await conn.query(&quot;MATCH (a:Account {id: $id}) RETURN a&quot;, {&quot;id&quot;: to_id}) else: await conn.query(&quot;MATCH (a:Account {id: $id}) RETURN a&quot;, {&quot;id&quot;: to_id}) await conn.query(&quot;MATCH (a:Account {id: $id}) RETURN a&quot;, {&quot;id&quot;: from_id}) await conn.execute( &quot;MATCH (a:Account {id: $id}) SET a.balance = a.balance - $amount&quot;, {&quot;id&quot;: from_id, &quot;amount&quot;: amount}, ) await conn.execute( &quot;MATCH (a:Account {id: $id}) SET a.balance = a.balance + $amount&quot;, {&quot;id&quot;: to_id, &quot;amount&quot;: amount}, ) await conn.commit() return except QueryError as e: await conn.rollback() if not str(e).startswith(&quot;40502:&quot;): raise if attempt &lt; max_retries - 1: await asyncio.sleep(0.1 * (2 ** attempt)) else: raise </code></pre> <p>```</p> <h4 id="data-validation-errors" class="position-relative d-flex align-items-center group"> <span>Data Validation Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-validation-errors" aria-haspopup="dialog" aria-label="Share link: Data Validation Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Problem</strong>: GQL22* - Data Exception</p> <p><strong>Prevention</strong>:</p> <ul> <li>Validate all inputs before database operations</li> <li>Use type-safe parameter binding</li> <li>Define appropriate constraints</li> <li>Implement application-level validation</li> </ul> <p><strong>Example Validation Framework</strong>: ```python from pydantic import BaseModel, EmailStr, Field from datetime import datetime</p> <p>class PersonCreate(BaseModel): name: str = Field(&hellip;, min_length=1, max_length=100) age: int = Field(&hellip;, ge=0, le=150) email: EmailStr birth_date: datetime</p> <pre><code>class Config: json_schema_extra = { &quot;example&quot;: { &quot;name&quot;: &quot;Alice Smith&quot;, &quot;age&quot;: 30, &quot;email&quot;: &quot;[email protected]&quot;, &quot;birth_date&quot;: &quot;1994-01-15T00:00:00Z&quot; } } </code></pre> <p>async def create_person(person: PersonCreate): # Pydantic validation happens automatically # Safe to execute query with validated data async with db.connection() as conn: await conn.execute( &quot;&quot;&quot; CREATE (p:Person { name: $name, age: $age, email: $email, birth_date: $birth_date }) &ldquo;&rdquo;&quot;, person.dict() ) ```</p> <h3 id="client-library-integration" class="position-relative d-flex align-items-center group"> <span>Client Library Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="client-library-integration" aria-haspopup="dialog" aria-label="Share link: Client Library Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="go-client" class="position-relative d-flex align-items-center group"> <span>Go Client</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="go-client" aria-haspopup="dialog" aria-label="Share link: Go Client"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```go import ( &ldquo;gitlab.com/devnw/codepros/geode-client-go/errors&rdquo; )</p> <p>// Error type checking if errors.IsConstraintViolation(err) { // Handle constraint violation } if errors.IsConnectionError(err) { // Handle connection error }</p> <p>// Status code access if gqlErr, ok := err.(errors.GQLError); ok { statusCode := gqlErr.StatusCode() // e.g., &ldquo;GQL23505&rdquo; message := gqlErr.Message() } ```</p> <h4 id="python-client" class="position-relative d-flex align-items-center group"> <span>Python Client</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="python-client" aria-haspopup="dialog" aria-label="Share link: Python Client"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```python from geode_client.exceptions import ( GeodeError, ConstraintViolationError, ConnectionError, TransactionRollbackError )</p> <p>try: await conn.execute(query, params) except ConstraintViolationError as e: print(f&quot;Constraint violation: {e.status_code} - {e.message}&quot;) except TransactionRollbackError as e: print(f&quot;Transaction rolled back: {e.status_code}&quot;) except ConnectionError as e: print(f&quot;Connection error: {e.status_code}&quot;) except GeodeError as e: print(f&quot;Geode error: {e.status_code} - {e.message}&quot;) ```</p> <h4 id="rust-client" class="position-relative d-flex align-items-center group"> <span>Rust Client</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rust-client" aria-haspopup="dialog" aria-label="Share link: Rust Client"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>```rust use geode_client::{Error, ErrorKind};</p> <p>match conn.execute(query, params).await { Ok(_) =&gt; println!(&ldquo;Success&rdquo;), Err(Error::ConstraintViolation { code, message }) =&gt; { eprintln!(&ldquo;Constraint violation {}: {}&rdquo;, code, message); } Err(Error::Connection(msg)) =&gt; { eprintln!(&ldquo;Connection error: {}&rdquo;, msg); } Err(Error::TransactionRollback { code }) =&gt; { eprintln!(&ldquo;Transaction rolled back: {}&rdquo;, code); } Err(e) =&gt; eprintln!(&ldquo;Error: {:?}&rdquo;, e), } ```</p> <h3 id="next-steps" class="position-relative d-flex align-items-center group"> <span>Next Steps</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="next-steps" aria-haspopup="dialog" aria-label="Share link: Next Steps"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ol> <li><strong>Implement Error Handling</strong> - Add proper error handling to all database operations</li> <li><strong>Add Retry Logic</strong> - Implement retries for transient errors (deadlocks, connection issues)</li> <li><strong>Validate Inputs</strong> - Validate all data before database operations</li> <li><strong>Monitor Errors</strong> - Track error rates and types in production</li> <li><strong>Review Logs</strong> - Regularly review error logs for patterns</li> <li><strong>Test Error Scenarios</strong> - Include error cases in test suite</li> </ol> <p><strong>Related Documentation</strong>:</p> <ul> <li><a href="/docs/transactions/advanced-patterns" >Transaction Patterns</a> </li> <li><a href="/docs/client-libraries/client-comparison#error-handling-strategies" >Client Error Handling</a> </li> <li><a href="/docs/guides/troubleshooting" >Troubleshooting Guide</a> </li> <li><a href="/docs/gql/conformance-profile" >GQL Compliance</a> </li> </ul> <hr> <p><em>Last Updated: January 2026</em> <em>Based on: ISO/IEC 39075:2024 GQL Standard</em> <em>Status: Production-ready - 100% GQL compliance</em></p>