Doctrine DBAL
  1. Doctrine DBAL
  2. DBAL-51

"No identifier/primary key specified for Entity" problem, Doctrine Beta 3 cannot find primary key

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major 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

        Activity

          People

          • Assignee:
            Juozas Kaziukenas
            Reporter:
            Minxuan GUO
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: