Component 'duplicate entry'
2 2

4 posts in this topic

Hi,

We've migrated to ftrack 3.5 today and now I'm having a hard time debugging this error:

shot_thumbnail            = shot.create_thumbnail(shotObj.thumbnail)
File "/../ftrack_api/entity/component.py", line 59, in create_thumbnail
server_location.add_component(thumbnail_component, [origin_location])
File "/../ftrack_api/entity/location.py", line 78, in add_component
[component], sources=source, recursive=recursive
File "/../ftrack_api/entity/location.py", line 250, in add_components
transferred=transferred
LocationError: Failed to register components with location
<ServerLocation("ftrack.server", 3a372bde-05bc-11e4-8908-20c9d081909b)> due to error:

Server reported error: IntegrityError((_mysql_exceptions.IntegrityError) (1062,
"Duplicate entry '7063f1a5-b6d3-44e9-a76f-f8958a974f53' for key 'PRIMARY'")
[SQL: u'INSERT INTO context (name, id)
VALUES (%s, %s)'] [parameters: (('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'), ('',
u'7063f1a5-b6d3-44e9-a76f-f8958a974f53'))])
Transferred component data that may require cleanup: [(<dynamic ftrack FileComponent
object 41096912>, 'db635dce-a914-431e-
9eb0-2fc8b1e00a03')]

This is now happening on all scripted components I'm creating, but I'm not 100% sure the migration is to blame. Here's an edited sample of what I'm doing:

shot_data = {}

shot_data["entity"] = {
    'name'          : shotObj.shot,
    'status'        : shot_status,
    'description'   : shotObj.description
}

shot_data["custom_attributes"] = {
    'Colorspace'    : [shotObj.out_colorspace],
    'Resolution'    : [shotObj.out_res],
    'fstart'        : shotObj.first_frame_no,
    'fend'          : shotObj.last_frame_no,
    'viewlut'       : [shotObj.viewlut],
    'Extension'     : [shotObj.out_file_type],
    'Frame Aspect'  : [shotObj.frame_aspect],
    'FPS'           : [shotObj.fps],
    'handles'       : shotObj.handles
}

shot_data["metadata"] = {}

for key, value in sorted(shotObj.__dict__.iteritems()):
    if key not in ['widget','task_list']:
        shot_data["metadata"][key] = str(value)

        
shot = session.create( 'Shot', shot_data["entity"])
shot["custom_attributes"] = shot_data["custom_attributes"]
shot["metadata"]          = shot_data["metadata"]
shot_thumbnail            = shot.create_thumbnail(shotObj.thumbnail)

I really don't understand what this error is trying to tell me. When I simply select an existing shot and use the create_thumbnail method everything is fine.

Any help would be greatly appreciated!

Willem

Share this post


Link to post
Share on other sites

Ok, so the issue was with these lines:

shot["custom_attributes"] = shot_data["custom_attributes"]
shot["metadata"]          = shot_data["metadata"]

which doesn't work anymore, at least with ftrack 3.5.9 and API version 1.0.4.  All credits to Eric Hermelin from ftrack support for figuring it out and providing the solution:

for key, value in shot_data["custom_attributes"].items():
    shot['custom_attributes'][key] = value

for key, value in shot_data["metadata"].items():
    shot['metadata'][key] = value

Everything is working fine again now.

Thanks Eric and Matthias for resolving this quickly!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
2 2