Start · Sprachen · PHP · Referenz · cubrid_error_code_facility

cubrid_error_code_facility

Funktion

Gibt den Facility-Code des zuletzt aufgetretenen CUBRID-Fehlers zurück, der angibt, in welchem Subsystem der Fehler entstanden ist.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_error_code_facility(): int

Beschreibung

cubrid_error_code_facility() liefert den sogenannten Facility-Code des letzten CUBRID-Fehlers. Dieser Code identifiziert das Subsystem oder die Komponente innerhalb der CUBRID-Datenbankarchitektur, in der der Fehler ursprünglich aufgetreten ist – beispielsweise der Client-Treiber, der Datenbankserver oder der Broker.

Die Funktion ist Teil der prozeduralen CUBRID-Erweiterung für PHP und wird typischerweise zusammen mit cubrid_error_code() und cubrid_error_msg() verwendet, um vollständige Fehlerinformationen bei der Datenbankarbeit zu erhalten. Während der reine Fehlercode den genauen Fehler benennt, ermöglicht der Facility-Code eine Kategorisierung nach Herkunft.

Mögliche Rückgabewerte sind vordefinierte Konstanten wie CUBRID_FACILITY_DBMS, CUBRID_FACILITY_CAS, CUBRID_FACILITY_CCI oder CUBRID_FACILITY_CLIENT, die jeweils unterschiedliche Systemschichten repräsentieren.

Diese Funktion ist besonders nützlich beim Debuggen komplexer CUBRID-Anwendungen, bei denen es wichtig ist zu wissen, ob ein Fehler im Datenbankserver selbst, im Broker-Prozess oder im PHP-Client-Code entstanden ist.

Rückgabewert

Typ
int
Beschreibung
Gibt den Facility-Code des zuletzt aufgetretenen CUBRID-Fehlers als Integer zurück. Mögliche Werte sind die Konstanten CUBRID_FACILITY_DBMS (Datenbankserver), CUBRID_FACILITY_CAS (Broker/CAS), CUBRID_FACILITY_CCI (CCI-Treiber) und CUBRID_FACILITY_CLIENT (PHP-Client). Gibt 0 zurück, wenn kein Fehler aufgetreten ist.

Beispiele

Facility-Code nach einem fehlgeschlagenen Verbindungsversuch auslesen

<?php
$conn = @cubrid_connect('localhost', 33000, 'nicht_vorhanden_db', 'admin', 'geheim');

if (!$conn) {
    $errorCode     = cubrid_error_code();
    $facilityCode  = cubrid_error_code_facility();
    $errorMsg      = cubrid_error_msg();

    echo "Fehlercode: " . $errorCode . PHP_EOL;
    echo "Fehlermeldung: " . $errorMsg . PHP_EOL;

    switch ($facilityCode) {
        case CUBRID_FACILITY_DBMS:
            echo "Fehlerquelle: DBMS (Datenbankserver)" . PHP_EOL;
            break;
        case CUBRID_FACILITY_CAS:
            echo "Fehlerquelle: CAS (Broker)" . PHP_EOL;
            break;
        case CUBRID_FACILITY_CCI:
            echo "Fehlerquelle: CCI (C-Treiber)" . PHP_EOL;
            break;
        case CUBRID_FACILITY_CLIENT:
            echo "Fehlerquelle: PHP-Client" . PHP_EOL;
            break;
        default:
            echo "Fehlerquelle: Unbekannt (Code: " . $facilityCode . ")" . PHP_EOL;
    }
}
Fehlercode: -677 Fehlermeldung: Cannot connect to a CUBRID CAS Fehlerquelle: CAS (Broker)

Facility-Code nach fehlerhafter SQL-Abfrage prüfen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'admin', '');

if ($conn) {
    $result = @cubrid_execute($conn, 'SELECT * FROM nicht_existente_tabelle');

    if (!$result) {
        $facility = cubrid_error_code_facility();
        $msg      = cubrid_error_msg();

        if ($facility === CUBRID_FACILITY_DBMS) {
            echo "Datenbankserver-Fehler: " . $msg . PHP_EOL;
        } else {
            echo "Sonstiger Fehler (Facility: " . $facility . "): " . $msg . PHP_EOL;
        }
    }

    cubrid_disconnect($conn);
}
Datenbankserver-Fehler: Semantic: class nicht_existente_tabelle does not exist. select * from nicht_existente_tabelle

// Wichtig · Fallstricke

Hinweis zur Verfügbarkeit: Diese Funktion steht nur zur Verfügung, wenn die CUBRID-PHP-Erweiterung (php_cubrid.dll bzw. cubrid.so) installiert und aktiviert ist. CUBRID ist kein Standardbestandteil von PHP.

Randfälle: Der Facility-Code bezieht sich immer auf den zuletzt aufgetretenen Fehler. Bei mehreren aufeinanderfolgenden Operationen sollte der Code daher unmittelbar nach der fehlerhaften Funktion abgerufen werden, bevor weitere CUBRID-Funktionen aufgerufen werden.

Konstantenwerte: Die numerischen Werte der Facility-Konstanten können je nach CUBRID-Version variieren; es empfiehlt sich daher, stets die symbolischen Konstantennamen anstatt der rohen Integer-Werte zu verwenden.