【发布时间】:2023-03-29 02:17:02
【问题描述】:
我有一个问题,我将一个应用程序从 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 值设置为浮动和更新,我会收到以下错误:
[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
我被这个困住了,有人可以帮忙吗?
问候
【问题讨论】:
-
为什么Doctrine1类型“float”在Oracle中设置为NUMBER DEFAULT而Doctrine2类型“float”设置为DOUBLE???
标签: php sql oracle symfony doctrine-orm