In a nutshell, JTableAsset extends JTableNested. JTableNested has an alias property so property_exists('alias') evaluates true in getRootId(). But, #__asset doesn't have an alias column which causes a MySQL error.
This is a trace of what I found:
- libraries/joomla/form/fields/rules.php calls JAccess::checkGroup($group->value, 'core.admin') at line 219
- libraries/joomla/access/access.php calls JTable::getInstance('Asset', 'JTable', array('dbo' => $db)) at line 145
- followed by $assets->getRootId() at line 146
- libraries/joomla/table/nested.php checks if (property_exists($this, 'alias')) at line 1164
- followed by $this->_db->setQuery($query)->loadColumn(); at line 1172
- which attempts to execute SQL=SELECT id FROM #__assets WHERE alias = 'root' which throws a 500 server error
- column alias does not exist in table #__assets