Search code examples
doctrine-ormentities

Error: "Index '' does not exist on table" when trying to create entities in Doctrine 2.0 CLI


I have a mySQL database. I am trying to get Doctrine2 to create entities from the MySQL schema. I tried this with our production database, and got the following error:

[Doctrine\DBAL\Schema\SchemaException] Index '' does not exist on table user

I then created a simple test database with only one table, and only three fields: an auto-increment primary key field and three varchar fields. When attempting to have doctrine create entities from this database, I got the same error.

Here is the table that I was trying to create an entitie for. (Should have been simple)

mysql> desc user;  
+-----------+-------------+------+-----+---------+----------------+  
| Field     | Type        | Null | Key | Default | Extra          |  
+-----------+-------------+------+-----+---------+----------------+  
| iduser    | int(11)     | NO   | PRI | NULL    | auto_increment |  
| firstname | varchar(45) | YES  |     | NULL    |                |  
| lastname  | varchar(45) | YES  |     | NULL    |                |  
| username  | varchar(45) | YES  |     | NULL    |                |  
+-----------+-------------+------+-----+---------+----------------+  
4 rows in set (0.00 sec)  

Here is the command that I used in an attempt to get said entities created:

./doctrine orm:convert-mapping --from-database test ../models/test

I am running:

  • 5.1.49-1ubuntu8.1 (Ubuntu)
  • mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686) using readline 6.1
  • Doctrine 2.0.1

Solution

  • I am facing the same problem right now. I have traced the problem back to the primary key being not identified / set correctly. The default value is boolean(false) which is cast to the string ''. Doctrine subsequently fails to locate an index for this attribute. ;-)

    Solution: Define a PRIMARY KEY.