【问题标题】:Doctrine update keeps changing my integers to varchars教义更新不断将我的整数更改为 varchar
【发布时间】:2016-05-15 05:41:05
【问题描述】:

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

但是,在我为定制表更改实体中的某些内容后,我尝试 --force 更新我的数据库并收到以下错误:

[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'

我的更新似乎是在我将 oc73_customer 中的 address_id 更改为 VARCHAR 后,将其更改为 INT 以匹配外键。我检查我的实体(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 数据库似乎真的很让人头疼。

谢谢 迈克尔

【问题讨论】:

  • addresId 不应该是这样的映射字段吗?:/** * @var Address * * @ORM\OneToOne(targetEntity="Address", cascade={"persist"}) */ private $address; 无论如何,回到主题,您是否尝试删除整个数据库(如果可以的话)并从头开始创建
  • 不,我不能真正删除数据库,但我想我可能刚刚解决了它 - 我相信这是一个缓存问题。

标签: mysql symfony doctrine-orm


【解决方案1】:

已解决 - 原来是缓存问题。当我清除缓存并删除目录时,数据库更新工作并与我声明的列定义匹配。

【讨论】:

    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2013-11-17
    • 2018-12-31
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多