Signatur
Beschreibung
Die Klasse mysql_xdevapi\Warning kapselt eine einzelne Warnung, die vom MySQL-Server als Reaktion auf eine über die X DevAPI ausgeführte Operation zurückgegeben wurde. Warnungen entstehen typischerweise bei Operationen wie Datentyp-Konvertierungen, impliziten Kürzungen oder nicht schwerwiegenden Protokollverstößen, die den Erfolg der Operation nicht verhindern, aber auf potenziell unerwartetes Verhalten hinweisen.
Objekte dieser Klasse werden nicht direkt instanziiert, sondern entstehen als Ergebnis der Methode getWarnings(), die auf Ergebnisobjekten (z. B. mysql_xdevapi\Result oder mysql_xdevapi\DocResult) verfügbar ist. Jedes Warning-Objekt besitzt drei öffentliche Eigenschaften: level (Schweregrad), code (numerischer Fehlercode) und message (menschenlesbarer Text der Warnung).
Die Auswertung von Warnungen ist besonders in Produktivumgebungen sinnvoll, wo fehlertolerantes Verhalten des Datenbankservers – etwa bei INSERT- oder UPDATE-Operationen mit Typkonvertierungen – protokolliert oder überwacht werden soll. Durch Iteration über die Warnungsliste können Entwickler gezielt auf bestimmte Warn-Codes reagieren oder Warnungen in ein Logging-System schreiben.
Beispiele
Warnungen nach einer INSERT-Operation auslesen
<?php
// Verbindung zur MySQL-Datenbank über X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('meine_sammlung');
// Eine Operation ausführen, die ggf. Warnungen erzeugt
$result = $collection->add('{"name": "Test", "alter": -1}')->execute();
// Anzahl der Warnungen prüfen
$anzahl = $result->getWarningsCount();
echo "Anzahl Warnungen: $anzahl\n";
// Alle Warnungen iterieren
foreach ($result->getWarnings() as $warnung) {
/** @var mysql_xdevapi\Warning $warnung */
echo "Level : " . $warnung->level . "\n";
echo "Code : " . $warnung->code . "\n";
echo "Meldung: " . $warnung->message . "\n";
echo str_repeat('-', 40) . "\n";
}
?>
Gezielt auf bestimmte Warn-Codes reagieren
<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$table = $schema->getTable('benutzer');
// Update ausführen
$result = $table->update()
->set('email', 'ungueltige-email')
->where('id = 42')
->execute();
// Relevante Warnungen filtern und protokollieren
foreach ($result->getWarnings() as $warnung) {
if ($warnung->level >= 2) {
// Nur echte Fehler-Warnungen (Level 2 = Warning, Level 1 = Note)
error_log(sprintf(
'[MySQL Warning] Code %d: %s',
$warnung->code,
$warnung->message
));
}
}
echo "Operation abgeschlossen.\n";
?>
// Wichtig · Fallstricke
Eigenschaften: Warning-Objekte verfügen über drei öffentliche, schreibgeschützte Eigenschaften:
level(int) – Schweregrad der Warnung (1 = Note, 2 = Warning).code(int) – Numerischer MySQL-Fehlercode (z. B. 1264 für Out of range).message(string) – Beschreibender Text der Warnung.
Voraussetzungen: Die X DevAPI-Erweiterung (mysql_xdevapi) muss installiert und aktiviert sein. Sie setzt einen MySQL-Server ab Version 5.7.12 bzw. 8.0+ mit aktiviertem X Plugin voraus.
Nicht direkt instanziierbar: Objekte dieser Klasse werden ausschließlich intern durch die Erweiterung erzeugt und über getWarnings() bereitgestellt. Ein direkter Aufruf von new Warning() ist nicht vorgesehen.