1

我正在为我的数据库使用 Doctrine 2,我目前正在尝试为我的一个具有“整数”类型的列设置一个长度,但它似乎没有被采用。

/** @Column(type="integer", length=255) */
protected $number;

当我检查我的数据库时,它仍然显示“int(11)”而不是“int(255)”。我没有发现任何人在谷歌上遇到过这个问题,或者我的关键字可能效果不佳。我见过一些人使用 length=XXX 而没有抱怨它的例子,所以我认为这是要走的路,但到目前为止还不好......

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

4

2 回答 2

3

这是因为你不能INT在 MySQL 中有这么大。

尝试改用该类型BIGINT,它从 -9223372036854775808 到 9223372036854775807(有符号)或从 0 到 18446744073709551615(无符号)。

教义版本:

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

手动的

于 2012-05-15T09:31:21.283 回答
0

经常看到这种误解。所以,澄清@meze(见上面的评论)。

size任何 MySQL 整数类型display width都与ZEROFILL.

ZEROFILL列的选择会导致一个值至少在左侧填充0到该列的size/为止display width

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

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 |
于 2018-01-30T07:51:27.350 回答