At my dev. site I run
$validator = new \Doctrine\ORM\Tools\SchemaValidator($em);
$errors = $validator->validateMapping();
$inSync = $validator->schemaInSyncWithMetadata();
in my bootstrap. After adding B. Eberlei's excellent Versionable behavior from his DoctrineExtensions (https://github.com/beberlei/DoctrineExtensions) on one of my classes, the schema would not validate any more. I tracked this down (hopefully correctly) to being a problem with the Doctrine\Schema\MySqlSchemaManager's call to getDoctrineTypeMapping($dbType) which relies on Doctrine\DBAL\Platforms\MySqlPlatform::initializeDoctrineTypeMappings().
When this getDoctrineTypeMapping($dbType) is executed with a $dbType == 'longtext' --> from SQL = "DESCRIBE dc_versionable_resource", the value 'text' is returned based on the mappings set in Doctrine\DBAL\Platforms\MySqlPlatform::initializeDoctrineTypeMappings()
This in turn leads to MySqlSchemaManager::_getPortableTableColumnDefinition() returning:
new Column($tableColumn['field'], \Doctrine\DBAL\Types\Type::getType($type), $options); which at that time equals:
'unsigned' => 0
'fixed' => 0
'notnull' => 1
Seems like a bit of an ambiguity as CLOBS (mapping-type = array) is represented as LONGTEXT and so are text fields.
A solution might be to be less restrict on comparison in \Doctrine\ORM\Tools\SchemaValidator::schemaInSyncWithMetadata() allowing Doctrine\DBAL\Types\TextType to pass as Doctrine\DBAL\Types\ArrayType... but, its a bit dirty - I know :-/