2012-05-15 2 views
1

DB에 Doctrine 2를 사용하고 있으며 현재 "정수"유형의 열 중 하나의 길이를 설정하려고합니다. 찍히지 않는 것 같습니다.길이가 255 인 Doctrine2 열 유형 정수가 DB에 적용되지 않습니다

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

내가 내 데이터베이스를 검사 할 때 여전히 "INT (255)" "INT (11)"대신 말한다. 나는 google에 그 문제를 경험해 누군가를 찾아 내지 않으며 또는 어쩌면 나의 키워드는 아주 좋게 일하고 있지 않다. 나는 길이 = XXX을 사용하는 사람의 몇 가지 예를 보았고 그것에 대해 불평하지 않았으므로 갈 방법이 될 것이라고 생각했지만 지금까지는 좋지 않았습니다 ...

저는 항상 전체 DB를 삭제/재구성합니다 그리고 프록시 등 그래서 나는 그것이 거기에서 오는 것을 의심한다.

답변

3

MySQL에서는 큰 INT을 가질 수 없기 때문입니다.

대신 BIGINT 유형을 사용해보십시오.이 유형은 -9223372036854775808에서 9223372036854775807 (서명 됨) 또는 0에서 18446744073709551615 (서명되지 않음)까지입니다.

교리 버전 :

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

Manual

+0

잘 작동 해 주셔서 감사합니다. –

+0

길이 속성은 너비를 의미합니다. 'INT' 너비에는 int의 범위와 아무 관련이 없기 때문에 큰 수를 가질 수 있습니다. – meze

+0

@ meze에 동의합니다. 이 대답은 가짜입니다. – codekandis

0

매우 자주 오해를 본. 그래서, @meze를 명확히하기 위해 (위의 주석을보십시오).

모든 MySQL 정수 유형의 sizeZEROFILL과 연동되는 display width입니다.

ZEROFILL 열에 대한 선택은 적어도 왼쪽 칼럼의 size/display width까지 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 | 
관련 문제