I have created a relationship class in arc catalog using the same arguments I'm using below, however if I try and create it using the script below I get:

arcgisscripting.ExecuteError: ERROR 000622: Failed to execute (Create Relationship Class). Parameters are not valid. ERROR 000628: Cannot set input into parameter attributed.

Following is the script I'm using:

import arcpy
from arcpy import env

env.workspace = "C:\a.gdb"

origin_table = "a.gdb\Trail_meta"
destination_table = "a.gdb\trails_mfg"
out_relationship_class = "a.gdb\t3meta"
relationship_type = "SIMPLE"
forward_label = "Attributes from meta"
backward_label = "Attributes from trail"
message_direction = "NONE"
cardinality = "ONE_TO_MANY"
attributed = "NONE"
origin_primary_key = "OBJECTID"
origin_foreign_key = "TRAIL_NAME"

  • 2
    At a quick glance, since you're setting your environment variable env.workspace, I think you may be misleading the script by re-stating the name of the database in your variables origin_table,destination_table, and relationship_type. Try removing "a.gdb\" from these strings and see what happens. – Jason Mar 6 '12 at 21:05
  • Added an answer below based on the comment above. – Jason Mar 6 '12 at 21:34
  • yeah, tried that. Didn't help (I only put that in because of this sample code) help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… – user3661 Mar 6 '12 at 21:39
  • 2
    When I see env.workspace = "C:\a.gdb" my first thought is "shouldn't that be one of the following:" env.workspace = "C:\\a.gdb", env.workspace = "C:/a.gdb" or env.workspace = r"C:\a.gdb" – PolyGeo Mar 8 '12 at 6:33
  • 1
    Yep, backslash is an escape character in Python. Gotta look out for that especially on Windows where your filesystem paths almost always contain backslashes. – blah238 May 6 '12 at 0:10

Since you're setting your environment variable env.workspace, I think you may be misleading the tool by re-stating the name of the database in your variables: origin_table,destination_table, and relationship_type.

What the tool sees this:

origin_table = "a.gdb\a.gdb\Trail_meta"
destination_table = "a.gdb\a.gdb\trails_mfg"
out_relationship_class = "a.gdb\a.gdb\t3meta"

Redefine your variables to this:

origin_table = "Trail_meta"
destination_table = "trails_mfg"
out_relationship_class = "t3meta"

Also, it looks like all you want to import is the env module from arcpy, you can do that by simply using the from arcpy import env command instead of importing the entire arcpy module first. This may save you a bit of time when running the script.

  • 3
    See @PolyGeo's suggestion regarding the backslashes. Also the OP will need to import arcpy to be able to use CreateRelationshipClass_management. Importing arcpy also sets up licenses and other environment stuff, which is what takes so long and importing env only will likely take the same amount of time since it has to do that anyways. – blah238 May 6 '12 at 0:16
  • @blah238 Good point on importing arcpy. – Jason May 7 '12 at 17:36

Thanks this post actually helped me get this working. Sorry this is probably long since too late.

I believe the problem in the original post is that the relationship_type parameter is missing in the function call, thus causing an invalid parameter to be associated with the "attributed" parameter. Just change the function call to the following:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.