2016-12-05 3 views
1

私はFosUserBundleでSymfony 3.0.9を使用してアプリケーションをビルドしています。私は最近作曲家の更新を行い、UserManagerやコマンドラインからユーザーを作成することはできません。エラーはIntegrity constraint violation: 1048 Column 'salt' cannot be nullです。Symfony 3 FOSUSERBUNDLE UPDATEが私のアプリケーションを壊した

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

そしてまた、私は$user->setSalt('87234hjjdwshjdsjkds')

ようsetSaltメソッドを呼び出した場合は、これを解決するためのすべての努力が持って失敗します。このエラーは、私が明示的に親を呼び出す場合でも、:: __構築物()私のコンストラクタメソッドでは、以下のショーとして起こります私は私の作曲updateコマンドに細心の注意を払うように始め、これは出力の一部だったが失敗しました:

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、私は '作曲家の更新'を実行し、再度試してみます。 – mrbabson

+0

はい!それはうまくいった!コンポーザーの更新後、私はスキーマを更新し、ユーザーテーブルを更新しました。それは最高だった。ありがとうございます – mrbabson

答えて

0

1)あなたは、バージョン2でFOSUserBundleを使用したい場合は何も、最終的な/安定したバージョンが存在しないような何かを実行することができます - dev/masterブランチでは常に変更が破られることを期待する必要があります。

2)日のカップルは、私は頻繁にあなたのケースで使用することをお勧めします少なくとも2.0.0ベータ版があるので:ユーザーのデータベース・スキーマに関する変更のカップルがありましたCheck it here.

3)は、例えば未使用のフィールドが削除されました。塩田に関する変更がありますので、あなたのケースでは、見逃せないものは、データベース管理を更新することです(Doctrineの場合はbin/console doctrine:schema:update --forceとなります)。

詳細については、 2.0.0ベータ版のリリースノート:

[BCブレーク] Userクラスのsaltフィールドはnullになりました。

+0

最初の作曲家の更新後にスキーマを更新すると問題が解決しました。 – mrbabson

0

あなたが作曲して、ユーザがバンドル

以外のすべてを更新したい場合はこのように、composer updateコマンドのパラメータとして、パッケージ名(複数可)を渡すことがあります。

composer update vendor1/package1 vendor2/package2 

ですから、長いを作成することができますユーザーバンドルを除くすべてのパッケージの文字列。あなたは

composer show -o --name-only 

コマンドの出力から得ることができるすべてのoudatedパッケージの 一覧。

ここでのオプション-oは、更新可能な古いパッケージのみです。

オプション--name-onlyには、バージョンと説明のないパッケージ名のみが表示されます。

だから、UnixライクなOS上で、あなたは

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ブレーク]ユーザークラスのソルトフィールドがnullになりました。明示的に塩を設定することに問題がある場合は、動作しない完全なコードスニペットを提供してください。 –

関連する問題