SQLSTATE [HY000]:常规错误:1215无法添加外键约束

时间:2015-09-14 17:06:33

标签: mysql symfony doctrine-orm

我一直在阅读其他Stackoverflow问题和其他帖子寻找错误。但没有什么对我有用。 我还读到,Doctrine在管理多个多对一关系方面存在一些困难。因此,我相信当我尝试更新数据库时,在同一个实体中混合两个一对多和一个多对多关联就会爆炸。

我正在使用Symfony2,Doctrine2和mySQL,当我使用doctrine命令更新数据库时出现错误。如果我使用generate:实体它不会哭。我尝试添加Project实体时出现问题。以前,文档,翻译和用户之间的关系工作正常。 在这里,您是我实体中的相关属性:

文件:

 class DocumentDictionary
    {

        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;

        /**
         * @ORM\ManyToOne(targetEntity="ProjectDictionary", inversedBy="documents")
         * @ORM\JoinColumn(name="project_id", referencedColumnName="id", nullable=FALSE)
         */
        private $project;

        /**
         * @ORM\ManyToOne(targetEntity="\AppBundle\UserBundle\Entity\User", inversedBy="documents")
         * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
         */
        private $creator;

        /**
         * @ORM\ManyToMany(targetEntity="TranslationDictionary", inversedBy="documents")
         * @ORM\JoinTable(name="translations_in_documents") 
         */
        private $translations;

//...Constructor, getters, settesr and few more attributes

Project类(1:N with Document):

class ProjectDictionary 
{
     /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @ORM\OneToMany(targetEntity="DocumentDictionary", mappedBy="project")
     */
    private $documents;
//Again more class stuff..

翻译(N:M):

    class TranslationDictionary
    {
     /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
         private $id;

         /**
         * @ORM\ManyToMany(targetEntity="DocumentDictionary", mappedBy="translations")
         */
        private $documents;

最后用户类(1:N):

    class User extends BaseUser
        {        
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;



         /**
         * @var string
         * @ORM\Column(type="string", length=64)
         *
         */
        protected $language;
/**
     * @ORM\OneToMany(targetEntity="DictionaryBundle\Entity\DocumentDictionary", mappedBy="creator")
     */
    protected $documents;

有什么想法吗?谁知道如何正确地混合这种关系? 提前谢谢。

**编辑:**我终于放弃了。我刚刚删除了我的Project实体并再次创建。它现在正在工作,所以我想某处有一个错误。 无论如何,谢谢大家!我怎么能关闭这个问题?

0 个答案:

没有答案