Ошибка БД 2

Аватар пользователя voviko voviko 17 февраля в 13:21

В продолжение темы https://drupal.ru/node/141148

В общем есть сайт, по крону подтягиваются данные, и создаются новые ноды, ЕСЛИ ИХ НЕТ

<?php
    
foreach ($new_data_mont as $key => $row) {
        
$query db_select('node''n');
        
$query->innerJoin('field_data_field_provider''p''n.nid = p.entity_id');
        
$query ->condition('p.field_provider_value''ista');
        
$query ->condition('n.title', (int)$key);
        
$query->fields('n', array('nid'));
        
$pribor_id $query->execute()->fetchField();
        if (
is_numeric($pribor_id)) {
            
watchdog(
                
'import_ista',
                
'Прибор есть на сайте. Title: @Name, nid: @ID',
                array(
'@title' => $key'@ID=> $pribor_id)
            );
        } else {
            
progress_fl('span''green'"<b>Добавляю новый прибор $key</b><br>");
            
$node = new stdClass();
            
$node->type 'pribor';
            
node_object_prepare($node);
            
$node->title = (int)$key;
            
$node->uid 1;
            
$node->language LANGUAGE_NONE;
            
$node node_submit($node);
            
node_save($node);
            
$pribor_id $node->nid;
            
watchdog(
                
'import_ista',
                
'Прибора нет на сайте. Title: @Name, nid: @ID',
                array(
'@title' => $key'@ID=> $pribor_id)
            );
        }
        
$nids[] = $pribor_id;
    }
?>

Те в теории, насколько я понимаю, не может быть два одинаковых тайтла. А у меня второй раз за три месяца уже создаются дубли (Код запускается минимум один раз по крону в сутки и есть ручной запуск)
Вроде как проверка вертает непонятно что (не срабатывает if (is_numeric($pribor_id)))
и в итоге получаем новую ноду, хотя нода с таким заголовком есть. Как вообще такое возможно и почему это случается ИНОГДА

PS. пока писал, додумался добавить вариант на корректность sql ответа, только пока не знаю как.

Комментарии