Doctrine更新不断将我的整数更改为varchars

时间:2016-02-05 09:45:45

标签: mysql symfony doctrine-orm

我目前正在开发一个实现OpenCart数据库的Symfony 2.8项目。我已经设置了一些映射,以便能够提取客户/地址/订单详细信息,到目前为止似乎没问题。

但是,在我更改了我的entites中的某个定制表之后,我尝试 - 强制更新我的数据库,我收到以下错误:

  

[Doctrine \ DBAL \ Exception \ DriverException]发生异常   执行'ALTER TABLE oc73_customer CHANGE address_id时   address_id VARCHAR(255)NOT NULL':SQLSTATE [HY000]:常规   错误:1832无法更改列'address_id':在外键中使用   约束'FK_ B25E4F72F5B7AF75'

     

[Doctrine \ DBAL \ Driver \ PDOException] SQLSTATE [HY000]:一般错误:   1832无法更改列'address_id':在外键中使用   约束'FK_ B25E4F72F5B7AF75'

为了匹配外键,我的更新似乎是在将其更改为INT后尝试将oc73_customer中的address_id更改为VARCHAR。我检查了我的实体(Oc73Customer):

/**
 * @var integer
 *
 * @ORM\Column(name="address_id", type="integer")
*/
private $addressId;

在我的oc73_address表中,我的实体条目:

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

哪个也设置为整数 - 那么为什么我的更新会继续尝试将oc73_customer表中的address_id更改为VARCHAR?我在代码中的任何地方都找不到它应该是什么?

如果有任何帮助,这是我的config.yml:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_mysql
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   "%database_name%"
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8
                schema_filter: ~^(?!oc73_simple_*)~
                mapping_types:
                  enum: string
   orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

非常感谢任何帮助 - 使用Doctrine和Symfony处理OpenCart数据库似乎是一件非常令人头疼的问题。

谢谢 迈克尔

1 个答案:

答案 0 :(得分:0)

已解决 - 事实证明这是一个缓存问题。当我清除缓存并删除目录时,数据库更新工作并匹配我声明的列定义。