Database Doctrine2列类型长度为255的整数不';不适用于DB

Database Doctrine2列类型长度为255的整数不';不适用于DB,database,integer,doctrine-orm,Database,Integer,Doctrine Orm,我正在为我的DB使用原则2,目前我正在尝试为我的一个列设置一个长度,该列具有“整数”类型,但它似乎没有被接受 /** @Column(type="integer", length=255) */ protected $number; 当我检查数据库时,它仍然显示“int(11)”而不是“int(255)”。我还没有发现任何人在谷歌上遇到过这个问题,或者我的关键词工作得不太好。我见过一些人使用length=XXX而不抱怨它的例子,所以我认为这将是一种方式,但到目前为止没有什么好的 我总是删除/重

我正在为我的DB使用原则2,目前我正在尝试为我的一个列设置一个长度,该列具有“整数”类型,但它似乎没有被接受

/** @Column(type="integer", length=255) */
protected $number;
当我检查数据库时,它仍然显示“int(11)”而不是“int(255)”。我还没有发现任何人在谷歌上遇到过这个问题,或者我的关键词工作得不太好。我见过一些人使用length=XXX而不抱怨它的例子,所以我认为这将是一种方式,但到目前为止没有什么好的


我总是删除/重建整个数据库和代理等,所以我怀疑它是否来自那里。

这是因为MySQL中不能有这么大的
INT

尝试使用类型
BIGINT
,它从-9223372036854775808变为9223372036854775807(有符号),或从0变为18446744073709551615(无符号)

条令版本:

/** @Column(type="bigint") */
protected $number; 

我们经常看到这种误解。因此,为了澄清@meze(见上面的评论)

任何MySQL整数类型的
size
都与
ZEROFILL
发挥作用的
显示宽度有关

ZEROFILL
列上进行选择会导致一个值,该值至少用
0
填充到该列的
大小
/
显示宽度

一个简单的例子来充分解释它。查看返回的输出

CREATE TABLE `foo`
(
    `col_1`    INT(1),
    `col_1_Z`  INT(1) ZEROFILL,
    `col_11`   INT(11),
    `col_11_Z` INT(11) ZEROFILL
);

INSERT INTO `foo`
VALUES
    (42, 42, 42, 42);

SELECT
    col_1,
    col_1_Z,
    col_11,
    col_11_Z
FROM
    `foo`;

/* returned output */

|       col_1 |     col_1_Z |      col_11 |    col_11_Z |
|-------------|-------------|-------------|-------------|
|          42 |          42 |          42 | 00000000042 |

“长度”属性表示宽度。对于
INT
width,可以有这么大的数字,因为它与INT的范围无关。我同意@meze。这是假的。