I have a Drupal 6 site with a taxonomy vocabulary that has a system name called "type".
When I try to migrate the site to Drupal 8 the migration fails with errors.
Upgrading d6_vocabulary_field
Attempt to create field storage type which is reserved by entity type node.
(/core/modules/field/src/Entity/FieldStorageConfig.php:321)
Upgrading d6_vocabulary_field_instance
Attempt to create a configurable field of non-configurable field storage type.
(/core/modules/field/src/Entity/FieldConfig.php:289)
Upgrading d6_term_node:4
Illegal offset type in isset or empty EntityFieldManager.php:289 [warning]
Illegal offset type EntityFieldManager.php:305 [warning]
Illegal offset type EntityFieldManager.php:307 [warning]
Invalid argument supplied for foreach() ContentEntityBase.php:521 [warning]
PHP Fatal error: Call to a member function getFieldStorageDefinition() on a non-object in */core/lib/Drupal/Core/Entity/ContentEntityBase.php on line 1102
The cause seems to be in FieldStorageConfig.php:321
// Disallow reserved field names.
$disallowed_field_names = array_keys($entity_manager->getBaseFieldDefinitions($this->getTargetEntityTypeId()));
if (in_array($this->getName(), $disallowed_field_names)) {
throw new FieldException("Attempt to create field storage {$this->getName()} which is reserved by entity type {$this->getTargetEntityTypeId()}.");
}
So a fieldname "type" is not allowed and when in Drupal 6 a vocabulary is called "type" the migration goes seriously wrong with random WSOD's on nodes caused by wrong storage of the nodes in the database. It looks like all the field data of a node has shifted one column.
There should somewhere be a solution for this because when I try it on a vanilla Drupal 8 site I can make a vocabulary that is called "type".