我目前正在开发一个实现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数据库似乎是一件非常令人头疼的问题。
谢谢 迈克尔
答案 0 :(得分:0)
已解决 - 事实证明这是一个缓存问题。当我清除缓存并删除目录时,数据库更新工作并匹配我声明的列定义。