Symfony2, Doctrine2 - forcer la mise à jour de table existe déjà sur plusieurs-à-plusieurs relation

Après que j'ai réussi à créé TaskBundle avec Un-à-Plusieurs relation entre la catégorie et les tâches, maintenant je suis en train de créer un nouveau TaskBundle avec plusieurs-à-Plusieurs. Je reçois aussi des problème avec la vérification de case à cocher dans cette relation, mais maintenant, il n'est pas un problème primaire (peut-être après la résolution de ce). J'ai supprimé toutes les tables, ce qui est TaskBundle aide et d'essayer de créer un nouveau, mais ici, c'est le problème (description en bas).

Ma Tâche de l'objet:

<?php
namespace Acme\TaskBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="tasks") 
*/
class Task
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;              
/**
* @ORM\Column(type="string", length=200)    
* @Assert\NotBlank(
*      message = "Task is empty"      
* )    
* @Assert\Length(
*      min = "3",
*      minMessage = "Task is too short"         
* )     
*/     
protected $task;
/**
* @ORM\Column(type="datetime")    
* @Assert\NotBlank()
* @Assert\Type("\DateTime")
*/
protected $dueDate;
/**
* @Assert\True(message = "You have to agree.")    
*/         
protected $accepted;
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="tasks")
* @ORM\JoinTable(name="categories")                         
*/
protected $category;
/**
* Constructor
*/
public function __construct()
{
$this->category = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer 
*/
public function getId()
{
return $this->id;
}
/**
* Set task
*
* @param string $task
* @return Task
*/
public function setTask($task)
{
$this->task = $task;
return $this;
}
/**
* Get task
*
* @return string 
*/
public function getTask()
{
return $this->task;
}
/**
* Set dueDate
*
* @param \DateTime $dueDate
* @return Task
*/
public function setDueDate($dueDate)
{
$this->dueDate = $dueDate;
return $this;
}
/**
* Get dueDate
*
* @return \DateTime 
*/
public function getDueDate()
{
return $this->dueDate;
}
/**
* Add category
*
* @param \Acme\TaskBundle\Entity\Category $category
* @return Task
*/
public function addCategory(\Acme\TaskBundle\Entity\Category $category)
{
$this->category[] = $category;
return $this;
}
/**
* Remove category
*
* @param \Acme\TaskBundle\Entity\Category $category
*/
public function removeCategory(\Acme\TaskBundle\Entity\Category $category)
{
$this->category->removeElement($category);
}
/**
* Get category
*
* @return \Doctrine\Common\Collections\Collection 
*/
public function getCategory()
{
return $this->category;
}
}

et de la Catégorie de l'objet

<?php
namespace Acme\TaskBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="categories") 
*/
class Category
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")             
*/
protected $id; 
/**
* @ORM\Column(type="string", length=200, unique=true)   
* @Assert\NotNull(message="Categories cannot be empty", groups = {"adding"})                   
*/         
protected $name;  
/**
* @ORM\ManyToMany(targetEntity="Task", mappedBy="category")
*/
private $tasks;            
public function __toString()
{
return strval($this->name);
}
/**
* Constructor
*/
public function __construct()
{
$this->tasks = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer 
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Category
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string 
*/
public function getName()
{
return $this->name;
}
/**
* Add tasks
*
* @param \Acme\TaskBundle\Entity\Task $tasks
* @return Category
*/
public function addTask(\Acme\TaskBundle\Entity\Task $tasks)
{
$this->tasks[] = $tasks;
return $this;
}
/**
* Remove tasks
*
* @param \Acme\TaskBundle\Entity\Task $tasks
*/
public function removeTask(\Acme\TaskBundle\Entity\Task $tasks)
{
$this->tasks->removeElement($tasks);
}
/**
* Get tasks
*
* @return \Doctrine\Common\Collections\Collection 
*/
public function getTasks()
{
return $this->tasks;
}
}

Donc, après j'ai mis doctrine:schema:update --force je vais d'erreur: Table 'symfony.categories' already exists. J'ai essayé de supprimer tous les caches, mais même problème. Une idée?

Il n'y a qu'problème, si c'est comme m2m relation.

PS: j'étais à la recherche de ce problème à Google, mais personne ne répond à ce problème. Il n'y avait que des questions, mais pas les bonnes réponses, où est le problème et comment le résoudre.

Peut-être essayer de faire un doctrine:schema:update --dump-sql puis en exécutant SQL directement dans la base de données et voir si elle pourrait éventuellement être mal formé SQL et il est juste de ne pas jeter une exception? Long shot, mais au moins qui se rétrécit vers le bas un peu.
Hannel: même message: [Doctrine\DBAL\Schema\SchemaException] Le tableau avec le nom " symfony.catégories' existe déjà. doctrine:schema:update [ - ] [--dump-sql] [--force] [--em[="..."]]
malheureusement, l'erreur se produit avant que le sql est entièrement créé afin de dump-sql n'aide pas vraiment.

OriginalL'auteur Bc. Poklop | 2013-09-28