DatabaseTransactionNoActiveException in mein_module_node_validate
am 22.01.2019 - 21:27 Uhr in
Hallo zusammen!
Ich bekomme in hook_node_validate() nur in bestimmten Situationen folgende Fehlermeldung:
DatabaseTransactionNoActiveException: in DatabaseConnection->rollback() (Zeile 1061 von /hp/cq/aa/iq/www/mk/proben/includes/database/database.inc).
Mein Hook mit Hilfsroutine sieht ungefähr so aus:
<?php
/**
* Prüft, ob schon ein node mit dem $title und dem Inhaltstyp 'my_content_type' vorhanden ist
* Dabei soll die $eigene_nid ausgenommen werden, z. B. wenn der Titel nur geändert wird
*/
function mein_module_title_exists($title = false, $eigene_nid = NULL) {
if ($title) {
$query = db_select('node', 'n');
$query
->fields('n', array('nid', 'type', 'title'))
->condition('n.type', 'my_content_type', '=')
->condition('n.title', $title, '=');
if (!is_null($eigene_nid)) { // Wenn neuer node angelegt wird, ist $eigene_nid NULL
$query
->condition('n.nid', $eigene_nid, '<>');
}
$result = $query
->execute()
->fetchAll()
;
return (!empty($result));
}
return false;
}
/**
* Implementiert hook_node_validate($node, $form, &$form_state)
* Geprüft wird bei Neuanlage eines Nodes und bei Editieren.
*/
function mein_module_node_validate($node, $form, &$form_state) {
if ($node->type == 'my_content_type') {
if (mein_module_title_exists($node->title, $node->nid)) { // Wenn Seite neu, ist nid NULL
form_set_error('title', 'Der Projektname wird bereits verwendet.');
}
}
} ?>
Das funktioniert in fast allen Fällen einwandfrei.
- Also Versuch Neuanlage mit schon vorhandenem Titel -> Fehlermeldung im Formular
- Änderung vom Titel (z.B. "Titel1" zu "Titel2") -> keine Fehlermeldung
- Andere Daten im Formular ohne Titeländerung -> keine Fehlermeldung
ABER:
Änderung des Titels NUR bzgl. der Groß- / Kleinschreibung (z.B. "Titel1" zu "tITEL1" oder "titel1") ->
Auf der Website ist ein unvorhergesehener Fehler aufgetreten. Bitte versuchen Sie es später nochmal.
Im Protokoll steht dann
DatabaseTransactionNoActiveException: in DatabaseConnection->rollback() (Zeile 1061 von /hp/cq/aa/iq/www/mk/proben/includes/database/database.inc).
Hat jemand eine Idee? Danke!
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 12 Stunden 2 Minuten
vor 12 Stunden 26 Minuten
vor 2 Tagen 17 Stunden
vor 3 Tagen 13 Stunden
vor 3 Tagen 14 Stunden
vor 3 Tagen 14 Stunden
vor 3 Tagen 16 Stunden
vor 3 Tagen 19 Stunden
vor 3 Tagen 20 Stunden
vor 3 Tagen 20 Stunden