Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sitecore - Root item is not defined

Tags:

sitecore

I've run into the following error while trying to deploy with TDS. I don't believe that there are any custom indexes. I've looked at the following link and cleared my \Data\Indexes folder.

Sitecore Index error - Root Item Not defined

What can cause this error?

Also this is the url I'm getting the error on : http://<hostname>/sitecore

Full stack trace:

[InvalidOperationException: Root item is not defined]
   Sitecore.Diagnostics.Assert.IsNotNull(Object value, String message) +59
   Sitecore.Search.Crawlers.DatabaseCrawler.Initialize(Index index) +106
   Sitecore.Search.Index.AddCrawler(ICrawler crawler) +36

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +1255
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +91
   Sitecore.Configuration.Factory.AssignProperties(Object obj, Object[] properties) +760
   Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper) +943
   Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper) +305
   Sitecore.Configuration.Factory.GetInnerObject(XmlNode paramNode, String[] parameters, Boolean assert) +858
   Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper) +795
   Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper) +305
   Sitecore.Configuration.Factory.CreateObject(String configPath, String[] parameters, Boolean assert) +395
   Sitecore.Search.SearchManager.get_SearchConfig() +71
   Sitecore.Search.SearchManager.GetIndex(String id) +43
   Sitecore.Shell.Applications.ShellForm.OnLoad(EventArgs e) +1331

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +1255
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +91
   Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +332
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428
like image 715
Daniel Little Avatar asked Mar 12 '13 08:03

Daniel Little


2 Answers

If you browse to this page http://[yourhostname]/sitecore/admin/showconfig.aspx

Search for any instances of the index element and check the <Root>path here</Root> node path actually exists in your content tree

See the default index for an example

<index id="system" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">__system</param>
<Analyzer ref="search/analyzer"/>
<locations hint="list:AddCrawler">
<core type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>core</Database>
<Root>/sitecore/content</Root>
<include hint="list:IncludeTemplate">
<application>{EB06CEC0-5E2D-4DC4-875B-01ADCC577D13}</application>
</include>
<Tags>application</Tags>
<Boost>2.0</Boost>
</core>
<core-controlpanel type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>core</Database>
<Root>/sitecore/content/applications/control panel</Root>
<include hint="list:IncludeTemplate">
<taskoption>{BDB6FA46-2F76-4BDE-8138-52B56C2FC47E}</taskoption>
</include>
<Tags>taskoption</Tags>
<Boost>1.9</Boost>
</core-controlpanel>
<master type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>master</Database>
<Tags>master content</Tags>
</master>
</locations>
</index>

Once you correct any invalid Root values the site should work again.

like image 190
Wesley Lomax Avatar answered Sep 19 '22 08:09

Wesley Lomax


Issue Cause

This problem usually occurs when an Sitecore lucene index has been declared but the <Root> it refers to is not in the database.

Note: If the database the index targets is web this may be cause you haven't published the items.

Issue fix

Because you can't get to the Sitecore desktop you'll have to comment out the index causing the issue. If you don't know which one it is you have to use plain old trial and error because sitecore won't tell you.

To see all indexes you have declared in your system go to http://[yourhostname]/sitecore/admin/showconfig.aspx and search for <index. This is the combination of all configuration declared in App_Config.

An index will look like this:

<index id="MyIndexId" type="Sitecore.Search.Index, Sitecore.Kernel">

Once you find the culprit comment it out then create or deploy the missing root item in Sitecore. Once that's done add the index back in.

like image 34
Daniel Little Avatar answered Sep 20 '22 08:09

Daniel Little