2016-12-05 59 views
1

我使用Symfony 3.0.9和FosUserBundle來構建我的應用程序。我最近做了一個作曲家更新,現在我無法通過UserManager或命令行創建用戶。錯誤是Integrity constraint violation: 1048 Column 'salt' cannot be null。當我明確地調用父:: __建設()在我的構造方法,如下所示,就會出現此錯誤甚至:Symfony 3 FOSUSERBUNDLE UPDATE破壞了我的應用程序

/** 
* constructor. 
*/ 
public function __construct() 
{ 
    parent::__construct(); 
} 

而且也將失敗,如果我叫喜歡$user->setSalt('87234hjjdwshjdsjkds')

的setSalt方法的一切努力來解決這個有失敗使我開始關注我的作曲家更新命令,這是一些輸出:

Updating dependencies (including require-dev) 
 

 
Removing twig/twig (v1.24.1) 
 
Installing twig/twig (v1.28.2) 
 
    Loading from cache 
 

 
Removing symfony/polyfill-util (v1.2.0) 
 
Installing symfony/polyfill-util (v1.3.0) 
 
    Loading from cache 
 
    
 
    ... 
 

 
Removing symfony/polyfill-intl-icu (v1.2.0) 
 
Installing symfony/polyfill-intl-icu (v1.3.0) 
 
    Loading from cache 
 

 
Removing psr/log (1.0.0) 
 
Installing psr/log (1.0.2) 
 
    Loading from cache 
 

 
Removing doctrine/cache (v1.6.0) 
 
Installing doctrine/cache (v1.6.1) 
 
    Loading from cache 
 

 
    ... 
 

 
Removing doctrine/orm (v2.5.4) 
 
Installing doctrine/orm (v2.5.5) 
 
    Loading from cache 
 

 

 
Removing sensiolabs/security-checker (v3.0.2) 
 
Installing sensiolabs/security-checker (v4.0.0) 
 
    Loading from cache 
 

 
Removing nikic/php-parser (v2.1.0) 
 
Installing nikic/php-parser (v2.1.1) 
 
    Loading from cache 
 

 
\t ... 
 

 
Removing doctrine/doctrine-migrations-bundle (1.1.1) 
 
Installing doctrine/doctrine-migrations-bundle (v1.2.0) 
 
    Loading from cache 
 
    
 
    ... 
 
    
 
Removing phpspec/phpspec (2.5.1) 
 
Installing phpspec/phpspec (2.5.5) 
 
    Loading from cache 
 

 
Removing doctrine/data-fixtures (v1.2.1) 
 
Installing doctrine/data-fixtures (v1.2.2) 
 
    Loading from cache 
 

 
Updating friendsofsymfony/user-bundle dev-master (147ca68 => 7261f7a) 
 
    Checking out 7261f7aa143b4bfdb0b7ddc5df208067fa7be698

正如你所見,FOSUSERBUNDLE已經更新。

恢復作曲家更新,刪除我的供應商目錄並運行作曲家安裝修復它。這歸結爲更新。這是問題所在。

如果有人知道我可以如何更新並仍然有工作的應用程序,我將非常感謝您的意見和反饋。

+0

您是否更新過模式?據我記得,以前的更新刪除了一些FOSUser實體字段,也許你試圖插入數據不再存在的領域。 –

+0

感謝@BartBartoman,我將運行'composer update'並重試。 – mrbabson

+0

是的!這工作!在作曲家更新之後,我更新了架構並更新了用戶表。這太棒了。謝謝 – mrbabson

回答

0

1)如果要在第2版使用FOSUserBundle沒有最終/穩定版本 - 所以你總是期望在開發/主分支中發生重大變化。

2)由於一兩天至少有一個2.0.0測試版,我建議巨資在你的情況下使用:Check it here.

3)有一對夫婦關於使用者數據庫模式的變化,例如,一些未使用的字段被刪除。關於鹽領域有一個變化 - 就你的情況而言 - 就我所知,可能缺少的是更新你的數據庫schame(如果你正在使用Doctrine調用bin/console doctrine:schema:update --force)。

有關詳細信息,請參閱發佈說明2.0.0測試版:

[BC break] User類的salt字段現在可以爲空。

+0

更新模式解決了我最初的作曲家更新後的問題。 – mrbabson

0

如果你想更新的一切,但用戶捆綁

與作曲家,你可以作爲參數傳遞包的名稱(縣)composer update命令,就像這樣:

composer update vendor1/package1 vendor2/package2 

所以,你可以創建長除用戶包之外的所有包的字符串。所有oudated包 列表,你可以從

composer show -o --name-only 

命令的輸出。

此處的選項-o僅適用於可更新的過時包。

選項--name-only顯然只顯示沒有版本和描述的包名稱。

所以,在類Unix的操作系統,你可以運行類似

composer show -o --name-only | grep -v 'friendsofsymfony/user-bundle' | xargs composer update 

More about Composer CLI

+0

感謝Nikita。這是非常方便的,因爲至少我可以選擇保持其他所有更新。關於如何更可靠地確認此錯誤並向開發人員提供詳細信息的任何想法? – mrbabson

+0

好吧,你將你的套件更新到下一個主要版本(根據你的作曲家輸出的v2.0.0-beta1),所以主要意味着BC打破。如此處所述 - https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Changelog.md有'[BC break] User類的salt字段現在可以爲空。如果您在明確設置salt時遇到麻煩,請提供完整的代碼片段,這些代碼片段不起作用。 –

相關問題