23.05.2019 08:41
УКМ_эксплуатант_2
 
Более 80 магазинов работает нормально.
А запустили на 81 - бяда!
Проблема в следующем:запрос из 1С-а вида
SQL код:
REPLACE INTO trm_in_external_orders (store_id,order_id,order_date,ext_order_type,ext_order_id,status,sale_type,client_name,check_structure,changeable,version,amount,deleted
values('3001','61220','2019-05-22 15:55:00','3','01903924-2','1','0','Василий','0','0','380','100','0'
дает ошибку
SQL код:
1 Duplicate entry '3001-61220' for key 'PRIMARY' SQL12.sql 1 1 
, хотя по логике - должен был УДАЛИТЬ существующую запись и вставить новую.
Вероятно - отличается MySQL конкретно этого магазина от остальных. Что смотреть?
23.05.2019 11:33
OlegON
 
так он же пишет, что в результате замены образуется дубликат первичного ключа с этим вот значением .. может, такая уже есть...
23.05.2019 11:39
УКМ_эксплуатант_2
 
Запись ТОЧНО есть до запуска запроса.
Даже если вручную удаляю эту запись - выдает такую ошибку.
На этой таблице еще триггер висит - может в нем дело (тогда непонятно, почему в остальных восьмидесяти магазинах все работает):
SQL код:
CREATE 
    DEFINER 
'ukm_server'@'localhost'
TRIGGER ukmserver.trm_in_external_orders_upd_tr
    BEFORE INSERT
    ON ukmserver
.trm_in_external_orders
    
FOR EACH ROW
BEGIN
    
DECLARE oldStatus INT;
    DECLARE 
oldDate DATETIME;
        
    IF (NEW.
status OR NEW.status OR NEW.status 6THEN
        SELECT 
`status`, `status_change_dateINTO oldStatusoldDate 
            FROM trm_in_external_orders WHERE store_id 
= new.store_id 
                
AND order_id = new.order_id AND deleted 0;
        IF (
oldStatus IS NULL OR oldStatus != new.statusTHEN
            SET 
new.status_change_date NOW();
        ELSE
            IF (
oldDate IS NOT NULLTHEN
                SET 
new.status_change_date oldDate;
            
END IF;
        
END IF;
    
END IF;
END 
23.05.2019 13:44
OlegON
 
Ну так вот и получается, что ты вставляешь запись и replace бы поменял на новую, но этот странный триггер подтягивает уже существующую запись... Мозговынос, конечно, я бы на время замены бы убрал триггер, на мой взгляд попахивает каким-то багом на имеющихся данных, но и архитектура действия немного странная.
27.05.2019 10:41
УКМ_эксплуатант_2
 
Нашел "бяду" - подвесил на нее еще триггер. Вот он и давал нарушение ключа...

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.