Could not resolve row id for path!
関連するエラーメッセージ:
- Could not resolve row id for path!
- Database concurrency problems: The path
<PATH>
is already associated with ShotGrid entity<ENTITY>
.
サンプル
Toolkit ユーザがフォルダを生成すると、「Could not resolve row id for path!」というエラーが表示されます。
FileSystemLocation エンティティが作成されますが、場合によっては重複することがあり、その結果、多数の問題が発生する可能性があります。
完全なエラーは次のようになります。
Creating folders, stand by...
ERROR: Could not resolve row id for path! Please contact support! trying to
resolve path '\\server\nas_production\CLICK\00_CG\scenes\Animation\01\001'.
Source data set: [{'path_cache_row_id': 8711, 'path':
'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001',
'metadata': {'type': 'ShotGrid_entity', 'name': 'sg_scenenum', 'filters':
[{'path': 'sg_sequence', 'values': ['$sequence'], 'relation': 'is'}],
'entity_type': 'Shot'}, 'primary': True, 'entity': {'type': 'Shot', 'id':
1571, 'name': '001_01_001'}}, {'path_cache_row_id': 8712, 'path':
'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Fx',
'metadata': {'type': 'ShotGrid_step', 'name': 'short_name'}, 'primary': True,
'entity': {'type': 'Step', 'id': 6, 'name': 'FX'}}, {'path_cache_row_id':
8713, 'path':
'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Comp',
注: エラーはこれより大幅に長くなることがあります。
エラーの原因
このエラーは、ShotGrid ([サイト基本設定] (Site Preferences) -> [ファイル管理] (File Management))とパイプライン設定の config/core/roots.yml
で指定されているストレージ ルート間に不一致があること示しています。
Windows を実行しているスタジオでは、大文字と小文字の不一致が原因でこのエラーが発生することがあります。これらのスタジオでパスの大文字と小文字は区別されませんが、オートデスクの設定では大文字と小文字が区別されます。E:\Projects
と E:\projects
のような単純な違いによって、このエラーが発生する可能性があります。
シーンの背後で実行される動作
このコードは、ShotGrid によって作成されたパスに FilesystemLocation エンティティを作成し、ShotGrid のストレージ ルートを使用してパスのルートを決定します。次に、ローカル キャッシュ内に同じエントリを作成し、データベース内の配置場所を決定する必要があります。ローカル キャッシュの場合は、roots.yml
を使用してパスのルートを決定します。大文字と小文字が一致しないため、生成されたパスは ShotGrid に入力されたパスと一致しません。この時点で、エラーが発生します。
エラーが整然と発生しない場合は、特に不適切な状態になります。フォルダが作成され、FilesystemLocation エントリが作成されても、ローカル パス キャッシュでこれらが同期されることはなく、ストレージ ルートの不一致が原因で同期することもできなくなります。
修正方法
まず、[サイト基本設定] (Site Preferences)のストレージ ルート パスが config/core/roots.yml
のパスと必ず一致するようにします。不一致を修正すると、以降のフォルダ作成呼び出しでエラーが解消されます。
次に、不正な FilesystemLocation エンティティをクリアします。エラーのある FilesystemLocation エンティティのセットに絞り込むことができた場合は、これらを削除するだけで済みます。通常はプロジェクトのすべてのパスが損なわれているため、すべてのパスを削除する必要があります。
- FilesystemLocation エンティティをクリアする方法: 理想的なのは、
tank unregister_folders
を実行できることです。これらすべてをクリアするには、tankunregister_folders --all
を実行します。(tank unregister_folders
のすべてのオプションでは、引数を指定しないで実行するだけで、使用上の注意事項が出力されます。) - ただし、データベースは既に不安定な状態になっているため、この方法が機能しないか、部分的にしか機能しない場合があります。コマンドを実行したら、ShotGrid の FilesystemLocations に戻って、削除予定の内容が実際に削除されていることを確認します。削除されていない場合は、不適切なエンティティを選択し、手動でごみ箱に移動します。
この時点で、ShotGrid の FilesystemLocations はクリーンな状態ですが、アーティストのローカル キャッシュには変更が反映されていない可能性があります。最後の手順では、各ユーザのマシンのローカル キャッシュを実際に同期します。この操作を行うには、tank synchronize_folders --full
を実行する必要があります。
これらの手順をすべて実行すると、パスのキャッシュは適切な状態になり、エラーは表示されなくなります。
関連リンク
コミュニティの完全なスレッドを参照してください。