Причины для узла Drupal.Auto_increment перейти на сотни миллионов (с полмиллиона)? - PullRequest
0 голосов
/ 11 марта 2011

Поле nid в моей таблице узлов Drupal подскочило с 254 107 до 500 220 117. Что могло вызвать это? Я не перепутал поле Auto_increment.

Я вижу очень небольшую свободу действий в вызовах функций drupal_write_record и node_save для любых человеческих ошибок, которые могут вызвать этот скачок nid, node_save, принимающий в качестве аргумента, является объектом узла.

Может ли плохо построенный объект узла вызвать скачок в поле Auto_increment? то есть что для какой-то странной ошибки код переключает поле nid на что-то еще, прежде чем передать его в node_save? Если бы это было так, ошибка была бы в коде, предшествующем node_save, но она также могла бы быть внутри разбросанного hook_invoke_nodeapi , так как node_save () вызывает этот фрагмент в начале функции:

// Let modules modify the node before it is saved to the database.
node_invoke_nodeapi($node, 'presave');

Как бы вы настроили тест для обнаружения этого?

Я, вероятно, установлю экзотическую условную точку останова (или пару из них) в node_save (), и особенно в последней строке db_query () . В db_query () точка останова, скорее всего, будет содержать регулярное выражение. Затем я мог бы установить какой-то автоматический тест, который сохраняет все типы узлов в базу данных (подумав о модуле devel) и посмотреть, появится ли что-нибудь. Если я найду что-нибудь, я сам отвечу на этот вопрос, если только кто-то еще не имел подобного опыта в прошлом и не ответит первым.

1 Ответ

0 голосов
/ 12 марта 2011

Да, мы не можем знать без дополнительной информации. Что Drupal использует для своей последовательности, зависит от версии, которую вы используете. См. это для получения дополнительной информации.

...