Signatur
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
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;
}
}
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);
}
// 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.