2016-02-05 60 views
0

我目前正在致力於實現OpenCart數據庫的Symfony 2.8項目。我已經建立了一些映射,以便能夠吸引客戶/地址/訂單的細節,到目前爲止似乎是好的。學說更新不斷更改我的整數varchars

然而,當我改變我的entites東西定製的桌子,我嘗試--force更新我的數據庫,我收到以下錯誤:

[Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'ALTER TABLE oc73_customer CHANGE address_id address_id VARCHAR(255) NOT NULL': SQLSTATE[HY000]: General error: 1832 Cannot change column 'address_id': used in a foreign key constraint 'FK_ B25E4F72F5B7AF75'

[Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000]: General error: 1832 Cannot change column 'address_id': used in a foreign key constraint '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; 

這也被設置爲一個整數 - 所以爲什麼我更新不斷試圖改變ADDRESS_ID在我的oc73_customer表中的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 

任何幫助,這是極大的讚賞 - 這似乎是一個真正的頭痛處理與教義和Symfony的Opencart的數據庫。

謝謝 邁克爾

+0

的addresId不應該是一個映射字段類似的東西?: '/ ** * @var地址 * * @ORM \ OneToOne(targetEntity = 「地址」,級聯= { 「持續」}) */ 私有$地址;' 無論如何,支持主題,你嘗試刪除你的整個數據庫(如果你當然可以),並從開始創建 –

+0

不,我真的不能刪除數據庫,但我認爲我可能只是解決了它 - 我認爲這是一個緩存問題。 –

回答

0

解決 - 事實證明這是一個緩存的問題。當我清除我的緩存並刪除目錄時,數據庫更新工作並匹配我指定的列定義。