2017-06-15 92 views
0

我想對實體添加一個新的布爾屬性,但是當我執行學說布爾列:模式:update命令,我收到以下錯誤:不可能產生與控制檯

[PDOException] 
SQLSTATE[42000]: Syntax error or access violation: 1064 Syntax error near 
'generated TINYINT(1) DEFAULT '1'' at line 1 

這裏的我的代碼:

/** 
* @var boolean 
    * 
    * @ORM\Column(type="boolean", nullable=true, options={"default":true}) 
    */ 
private $generated; 

我也試圖默認設置爲0,到1,以false ...

我也試過這樣:

private $generated = 0 

private $generated = false 

...

我也試圖通過構造函數來設置默認值,但沒有什麼工作。

最後,我想沒有任何默認值,並得到這個錯誤:

[PDOException] 
SQLSTATE[42000]: Syntax error or access violation: 1064 Syntax error near  'generated TINYINT(1) DEFAULT NULL' at line 1 

看來我使用的Symfony收到此錯誤:( 如果任何人有任何想法的唯一的人.. 。 非常感謝

查爾斯

回答

0

generated是在MySQL中的保留字,所以你必須quote the name according to the documentation

Sometimes it is necessary to quote a column or table name because of reserved word conflicts. Doctrine does not quote identifiers automatically, because it leads to more problems than it would solve. Quoting tables and column names needs to be done explicitly using ticks in the definition.

後,你可以直接將其初始化:

/** 
    * @var boolean 
    * 
    * @ORM\Column(name=`generated`, type="boolean", nullable=true) 
    */ 
private $generated = true; 

,並調用你的update語句與force參數,如doctrine:schema:update --force

+0

它不起作用:(即使當我沒有設置任何默認值,我得到一個SQL錯誤。但感謝您的幫助! – Alfredo

+0

您是否嘗試在註釋中添加'name = \'generated \'',可能它是sql中的保留字。您需要使用蜱蟲;-) – lordrhodos

+0

謝謝!這是問題...'生成'似乎是一個保留字爲mysql – Alfredo