Синхронизация не синхронизирует по полю id
#21 Гость_Roman_*
Отправлено 14 Май 2013 - 10:38
#22
Отправлено 14 Май 2013 - 14:19
#23 Гость_Roman_*
Отправлено 14 Май 2013 - 14:42
#24
Отправлено 14 Май 2013 - 15:24
#25 Гость_Roman_*
Отправлено 14 Май 2013 - 15:33
#26
Отправлено 14 Май 2013 - 16:54
#27
Отправлено 21 Май 2013 - 02:47
У меня ошибка такая.
Ошибка системы.
Error generated:
/var/www/soundfon/include/functions_cron.php(4571) : sql_query()
/var/www/soundfon/cron.php(69) : eval()'d code(1) : sync_data()
/var/www/soundfon/cron.php(69) : eval()
Ошибка SQL запроса: INSERT INTO `cb_data31` (`user_id`,`add_time`,`status`,`f241`,`f681`,`f691`,`f701`,`f711`,`f721`,`f731`,`f741`,`f751`,`f831`,`f841`,`f851`,`f951`,`f1321`,`f1871`,`f961`,`f971`,`f981`,`f991`,`f1001`,`f1011`,`f1021`,`f1031`,`f1041`,`f1051`,`f1061`,`f1071`,`f1081`,`f1091`,`f1101`,`f1111`,`id`,`r`,`s21`) VALUES ('3','2012-10-15 13:02:00','0','ООО Шоу Компани','ФИО','xxxxxxx@mail.ru','','Клиент','','b5mN5GjaBc','777','0','','3','','Да','','1','Клиент','','','','','','','','','','','','','0','','','352','1','S')
Duplicate entry '352' for key 'PRIMARY'
Я понимаю что оно пытаеться добавить строчу а mysql не дает это сделать и говорит что такая строка уже есть и нельзя дулироват primary key
Но как сделать чтобы код не тупил и не пытался добавить то что уже есть? Зачем добавлять когда можно глянуть есть ли строка с таким id и просто update её ведь в каких то случаях такое случаеться? И всё это делает вот этот страшный код из файла functions1.php понимаю что вы специально его не зендили, но я не понимаю как его исправить, да и бестолку править по тому как ревизии всё погубят. Да знаю что можно подключать сторонние php но у меня реально мозга не хватит.
А вот и код. (Еще раз повторюсь что поле id мне нужно синхронизировать инече диструкция наступет) Из за того что поля связи мне нужно выводить по разному в разных базах.
// Синхронизация
if ($sync_exp_fields[$field_id])
{
foreach ($sync_exp_fields[$field_id] as $sync_id=>$sync_field_info)
{
if ($sync_id == $event['sync_id']) continue;
if ($sync_exp_list[$sync_id]['sync_mode']) $sync_line_id=$line["s".$sync_id];
else $sync_line_id=$line_id;
if (!$sync_line_id) continue;
if (($type_field==5)&&($sync_exp_fields[$t_field["s_field_id"]][$sync_id])) // поле связь развернутое в текст
{
$n_link=$new_v;
if ($sync_exp_list[$sync_id]['sync_mode'])
{
$sqlQuery = "SELECT s".$sync_id." as s FROM `".DATA_TABLE.$t_field['s_table_id']."` WHERE id='$n_link'";
$result4 = sql_query($sqlQuery);
$s_res = mysql_fetch_array($result4);
$n_link=$s_res['s'];
}
if ($n_link==0)
{
insert_log('sync','Export faild on table '.$table_id." line ".$line_id." field ".$field_id." on value ".$one_change['new']." - n_link is zerro.", $table_id, $line_id);
}
else
$sync_exp_data[$sync_field_info['sync_id']][$field_id][$sync_line_id]=$n_link;
}
else
{
if ($type_field==5)
$f_val=$new_v;
else
$f_val=$one_change['new'];
if (($sync_exp_list[$sync_id]['sync_mode'])&&($sync_line_id===0))
{
if ($event["is_new_line"])
{
$sync_line_id="^".$line_id;
$sync_exp_data[$sync_field_info['sync_id']][$field_id][$sync_line_id]=$f_val;
}
else
{
$sqlQuery = "SELECT COUNT(*) AS `s_cnt` FROM `".SYNC_CACHE_TABLE."` WHERE `sync_id`='".$sync_field_info['sync_id']."' AND `field_id`='$field_id' AND `line_id`='$line_id'";
$c_result = sql_query($sqlQuery);
$c_row = sql_fetch_assoc($c_result);
if ($c_row['s_cnt'])
$sqlQuery = "UPDATE `".SYNC_CACHE_TABLE."` SET `value`='$f_val' WHERE `sync_id`='".$sync_field_info['sync_id']."' AND `field_id`='$field_id' AND `line_id`='$line_id'";
else
$sqlQuery = "INSERT INTO `".SYNC_CACHE_TABLE."` (`sync_id`, `field_id`, `line_id`, `value`) VALUES ('".$sync_field_info['sync_id']."', '$field_id', '$line_id','$f_val')";
sql_query($sqlQuery);
}
}
else
{
$sync_exp_data[$sync_field_info['sync_id']][$field_id][$sync_line_id]=$f_val;
}
}
}
}
#28 Гость_Roman_*
Отправлено 21 Май 2013 - 07:43
#29
Отправлено 21 Май 2013 - 09:06
#30 Гость_Roman_*
Отправлено 21 Май 2013 - 09:31
#31
Отправлено 21 Май 2013 - 10:49
#32 Гость_Roman_*
Отправлено 21 Май 2013 - 11:02
#33
Отправлено 22 Май 2013 - 23:02
#34
Отправлено 23 Май 2013 - 00:38
2. И еще я разгадал часть проблеммы почему не все поля синхронизируються. Что-то изменилось в версии 198 и теперь допустим если в поле связь стоит "выводить в одну строку" пример строки: "текст 96" то при попытке ввести в поле связь при добавлении "96" она ничего не находит, а если "пробел"+96 то всё находит. Это ярко видно в моей конфигурации: Когда я к заказу привязываю платеж вида "Контрагент сумма 785" я не могу как раньше простоввести просто 785. обязательно пробел перед 785. Жить можно, но первое время я думал я погибну искать платеж среди 1000 строк. Теперь понятно.
#35
Отправлено 23 Май 2013 - 02:38
Сообщение отредактировал Андрей Гуляев: 23 Май 2013 - 02:42
#36 Гость_Roman_*
Отправлено 23 Май 2013 - 07:42
#37
Отправлено 23 Май 2013 - 12:25
#38 Гость_Roman_*
Отправлено 23 Май 2013 - 12:36
Количество пользователей, читающих эту тему: 13
0 пользователей, 13 гостей, 0 анонимных