我遇到问题,我将应用程序从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
我坚持这个,任何人都可以帮忙吗?
问候
答案 0 :(得分:0)
最后,我将Doctrine类型更改为" Decimal,precision 2,scale 1'。
我手动将Oracle类型更新为NUMBER(2,1)。