首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长度为255的Doctrine2列类型整数不适用于DB

问长度为255的Doctrine2列类型整数不适用于DB
EN

Stack Overflow用户
提问于 2012-05-15 17:26:21
回答 2查看 3.1K关注 0票数 1

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

代码语言:javascript
复制
/** @Column(type="integer", length=255) */
protected $number;

当我检查我的数据库时,它仍然显示"int(11)“而不是"int(255)”。我没有发现任何人在google上遇到过这个问题,或者我的关键字不太好用。我见过一些使用length=XXX的人没有抱怨的例子,所以我认为这是可行的方法,但到目前为止还不是很好……

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-15 17:31:21

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

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

教义版本:

代码语言:javascript
复制
/** @Column(type="bigint") */
protected $number; 

Manual

票数 3
EN

Stack Overflow用户

发布于 2018-01-30 15:51:27

我经常看到这样的误解。所以,为了澄清@meze (参见上面的评论)。

任何MySQL整数类型的size都与display width有关,它与ZEROFILL一起发挥作用。

对ZEROFILL列的select将得到一个至少用0填充的值,直到该列的size / display width。

一个简单的例子来完整地解释它。看看返回的输出。

代码语言:javascript
复制
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 |
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10597819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档