First here is the reminder how it works:
The updateOrCreate() method attempts to find a Model matching the constraints passed as the first parameter. If a matching Model is found, it will update the match with the attributes passed as the second parameter. If no matching Model is found a new Model will be created with both the constraints passed as the first parameter and the attributes passed as the second parameter.
You already have the message of what are you doing wrong:
Insert value list does not match column list
So you are either providing some array key with value for which you don't have a column in the database, or you are missing some key with value for the existing column.