我正在为我的数据库使用Doctrine 2,并且我目前正在尝试为我的一列设置一个“整数”类型的长度,但它似乎不被采用。
/** @Column(type="integer", length=255) */
protected $number;当我检查我的数据库时,它仍然显示"int(11)“而不是"int(255)”。我没有发现任何人在google上遇到过这个问题,或者我的关键字不太好用。我见过一些使用length=XXX的人没有抱怨的例子,所以我认为这是可行的方法,但到目前为止还不是很好……
我总是删除/重建整个数据库和代理等,所以我怀疑它来自那里。
发布于 2012-05-15 17:31:21
这是因为在MySQL中不能有这么大的INT。
尝试使用BIGINT类型,它从-9223372036854775808到9223372036854775807 (有符号)或从0到18446744073709551615 (无符号)。
教义版本:
/** @Column(type="bigint") */
protected $number; 发布于 2018-01-30 15:51:27
我经常看到这样的误解。所以,为了澄清@meze (参见上面的评论)。
任何MySQL整数类型的size都与display width有关,它与ZEROFILL一起发挥作用。
对ZEROFILL列的select将得到一个至少用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 |https://stackoverflow.com/questions/10597819
复制相似问题