Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.0-BETA4
-
Fix Version/s: 2.0.0-RC1-RC3
-
Component/s: Schema Managers
-
Labels:None
-
Environment:windows xp, sql server 2008, php 5.3
Description
when execute
php doctrine.php orm:convert-mapping --from-database annotation "Entities"
get error message
No identifier/primary key specified for Entity 'Classname(Tablename)'. Every Entity must have an identifier/primary key.
For resolving this problem
I've replaced the line
public function loadMetadataForClass($className, ClassMetadataInfo $metadata)
{
...
$indexes = $this->tables[$tableName]->getIndexes();
...
}
in function "loadMetadataForClass" in \\Doctrine\ORM\Mapping\Driver\DatabaseDriver.php by
public function loadMetadataForClass($className, ClassMetadataInfo $metadata)
{
...
$indexes = $this->_sm->listTableIndexes($tableName);
...
}
then the beta 3 works for my date base
It is because doctrine look for $indexes['prime'] to construit the primary key in entities. when we use "$this->tables[$tableName]>getIndexes()", the keys in $indexes are the real name of indexes of the data base, and in my database, the primary key indexes are named PK_TABLENAME. So I have to use $this>_sm->listTableIndexes($tableName) to pre-edit the indexes before get the list
This is an error in the MSSQL SchemaManager, it is not correctly setting the primary = true key in the index retrieve method. I move that issue to DBAL and reassign to juokaz