{"record":{"id":"1983516260a921b7","repo":"EllanJiang/GameFramework","slug":"load-data-failure-in-data-provider-helper-data-asset-name-0","errorCode":null,"errorMessage":"Load data failure in data provider helper, data asset name '{0}'.","messagePattern":"Load data failure in data provider helper, data asset name '(.+?)'\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Base/DataProvider/DataProvider.cs","lineNumber":218,"sourceCode":"                    break;\n\n                case HasAssetResult.BinaryOnDisk:\n                    m_ResourceManager.LoadBinary(dataAssetName, m_LoadBinaryCallbacks, userData);\n                    break;\n\n                case HasAssetResult.BinaryOnFileSystem:\n                    int dataLength = m_ResourceManager.GetBinaryLength(dataAssetName);\n                    EnsureCachedBytesSize(dataLength);\n                    if (dataLength != m_ResourceManager.LoadBinaryFromFileSystem(dataAssetName, s_CachedBytes))\n                    {\n                        throw new GameFrameworkException(Utility.Text.Format(\"Load binary '{0}' from file system with internal error.\", dataAssetName));\n                    }\n\n                    try\n                    {\n                        if (!m_DataProviderHelper.ReadData(m_Owner, dataAssetName, s_CachedBytes, 0, dataLength, userData))\n                        {\n                            throw new GameFrameworkException(Utility.Text.Format(\"Load data failure in data provider helper, data asset name '{0}'.\", dataAssetName));\n                        }\n\n                        if (m_ReadDataSuccessEventHandler != null)\n                        {\n                            ReadDataSuccessEventArgs loadDataSuccessEventArgs = ReadDataSuccessEventArgs.Create(dataAssetName, 0f, userData);\n                            m_ReadDataSuccessEventHandler(this, loadDataSuccessEventArgs);\n                            ReferencePool.Release(loadDataSuccessEventArgs);\n                        }\n                    }\n                    catch (Exception exception)\n                    {\n                        if (m_ReadDataFailureEventHandler != null)\n                        {\n                            ReadDataFailureEventArgs loadDataFailureEventArgs = ReadDataFailureEventArgs.Create(dataAssetName, exception.ToString(), userData);\n                            m_ReadDataFailureEventHandler(this, loadDataFailureEventArgs);\n                            ReferencePool.Release(loadDataFailureEventArgs);\n                            return;\n                        }","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Base/DataProvider/DataProvider.cs#L200-L236","documentation":"After successfully loading the binary bytes, ReadData hands them to IDataProviderHelper.ReadData to parse. If the helper returns false — meaning it could not interpret the bytes for this owner/asset — the provider wraps that failure in this exception naming the data asset. This indicates the data content is unreadable by the configured helper.","triggerScenarios":"DataProviderHelper.ReadData(owner, dataAssetName, bytes, 0, length, userData) returns false — typically a format/version mismatch between the asset file and the helper's parser, or userData the helper cannot accept.","commonSituations":"Asset was re-exported with a newer table/config format while the runtime helper expects an older layout; wrong helper type assigned for the asset kind; passing incompatible userData to ReadData.","solutions":["Re-export the data asset so its format matches the helper's parser version.","Verify the correct IDataProviderHelper implementation is assigned for this provider type.","Check userData requirements of the helper and pass compatible user data.","Inspect helper logs to see why parsing returned false."],"exampleFix":"// before\nhelper.ReadData(owner, name, bytes, 0, length, userData); // returns false, old format\n// after\n// re-export asset with matching GameFramework DataProvider version, then retry ReadData","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { dataProvider.ReadData(name, 0, userData); }\ncatch (GameFrameworkException e) when (e.Message.StartsWith(\"Load data failure\")) { Log.Error(\"Helper could not parse '{0}'; check asset format/version.\", name); }","preventionTips":["Keep asset export format and runtime helper versions in lockstep.","Assign the correct helper type per provider kind.","Test parse round-trips after every asset re-export."],"tags":["parse-failure","dataprovider","format-mismatch"],"backgroundTag":"schema-validation-failed","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}