tirando ad indovinare:

se col2 è una chiave primaria (visto che la usi nel where) magari all'update la setti a null per qualche errore e quindi giustamente ti viene risposto "ueh, ma che stai a fa?"

la violazione del vincolo unique mi pare che parli da sola, ma magari potrebbe riferirsi all'errore di cui sopra

fatti stampare la query che esegui e controlla di non aver scritto male qualcosa

controlla di star facendo effettivamente un update e non una insert per qualche if/case fatto male