2012-05-15 75 views
1

我爲我的數據庫使用Doctrine 2,目前我正在嘗試爲具有「整數」類型的列中的一個設置長度,但它只是似乎沒有被採取。Doctrine2列類型長度爲255的整數不適用於DB

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

當我檢查我的數據庫它仍然說「int(11)」,而不是「int(255)」。我還沒有發現任何人在Google上遇到過這個問題,或者我的關鍵字不能很好地工作。我見過一些使用length = XXX的人的例子,並沒有抱怨,所以我認爲這將是走的路,但目前爲止沒有好...

我總是丟/重建整個數據庫和代理等,所以我懷疑它來自那裏。

回答

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的整數類型的size是哪些進場ZEROFILLdisplay width

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 | 
相關問題