我目前正在开发一个 Symfony 2.8 项目,该项目实现了 OpenCart 数据库。我已经设置了一些映射,以便能够提取客户/地址/订单详细信息,到目前为止似乎没问题。
但是,在我更改实体中的某些内容以定制表后,我尝试 --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'
在我将 oc73_customer 中的 address_id 更改为 INT 以便匹配外键后,我的更新似乎正在尝试将其更改为 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 数据库似乎是一个真正令人头痛的问题。
谢谢 迈克尔
最佳答案
已解决 - 事实证明这是一个缓存问题。当我清除缓存并删除目录时,数据库更新起作用并匹配我指定的列定义。
关于mysql - Doctrine 更新不断将我的整数更改为 varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220874/