Symfony2 Doctrine2 Oracle数据库NUMBER DEFAULT类型?

时间:2014-04-16 08:30:28

标签: php sql oracle symfony doctrine-orm

我遇到问题,我将应用程序从Symfony 1.4迁移到Symfony 2.4。我有一些麻烦得到十进制变量工作。我最后用另一种类型更新了数据库,但现在我必须使用旧的生产Oracle数据库,Doctrine2告诉我如果有数据,我就无法更新字段类型。

它存储的数据是0.1或0.5或1.0

在Oracle中,DATA_TYPE为" NUMBER"

    CREATE TABLE "APPRENTICE"."APPRENTICE_YEARTYPE" 
   (    "ID" NUMBER(20,0), 
    "NAME" VARCHAR2(255 BYTE), 
    "ROUNDNUMBER" NUMBER DEFAULT NULL
   ) SEGMENT CREATION IMMEDIATE

当我使用Symfony2命令导出旧数据库时,Doctrine中的数据类型是Integer ...我不能有带int的小数。 当我尝试用2的比例将类型更改为十进制时,我得到的错误是我无法更改类型。

生成的Doctrine2代码:

/**
 * @var integer
 *
 * @ORM\Column(name="ROUNDNUMBER", type="integer", nullable=false)
 */
private $roundnumber;

Doctrine1架构:

ApprenticeYeartype:
  columns:
    id:                  {type: integer, notnull: true, primary: true, autoincrement: true}
    name:                {type: string(255), notnull: true}
    roundNumber:         {type: float, notnull: true}

如果我尝试将Doctrine2值设置为float并更新,则会出现以下错误:

 [Doctrine\DBAL\DBALException]
 An exception occurred while executing 'ALTER TABLE APPRENTICE_YEARTYPE MODI
 FY (ROUNDNUMBER  DOUBLE PRECISION DEFAULT NULL)':

 ORA-01440: column to be modified must be empty to decrease precision or sca
 le






 [Doctrine\DBAL\Driver\OCI8\OCI8Exception]
 ORA-01440: column to be modified must be empty to decrease precision or sca
 le

我坚持这个,任何人都可以帮忙吗?

问候

1 个答案:

答案 0 :(得分:0)

最后,我将Doctrine类型更改为" Decimal,precision 2,scale 1'。

我手动将Oracle类型更新为NUMBER(2,1)。