我正在使用Symfony 3.0.9与FosuserBundle构建我的应用程序。我最近进行了作曲家更新,现在无法通过Usermanager或命令行创建用户。错误是Integrity constraint violation: 1048 Column 'salt' cannot be null
。即使我在我的构造函数方法中明确调用parent :: __ construct(),如下所示:
/**
* constructor.
*/
public function __construct()
{
parent::__construct();
}
,如果我调用setSalt方法(如 $user->setSalt('87234hjjdwshjdsjkds')
解决此问题的所有努力都失败了,因此我开始密切注意我的作曲家更新命令,这是一些输出:
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
...
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已更新。
删除作曲家更新,删除我的供应商目录并运行Composer Install可以修复它。这将其总结到更新。那是问题。
如果有人知道我如何更新并且仍然有一个工作应用程序,我将感谢您的评论和反馈。
1)如果要在版本2中使用fosuserbundle,则没有最终/稳定版本 - 因此,您始终必须期望在开发/主人公上进行破坏。
2)由于几天有2.0.0 Beta版本,至少我建议在您的情况下使用它:在此处检查。
3)有关用户数据库架构的更改,例如,删除了几个未使用的字段。而且,关于盐领域有一个更改 - 因此,据我所知,可能缺少的事情是更新数据库SCHAME(如果您使用Doctrine,请致电bin/console doctrine:schema:update --force
)。
有关详细信息,请参见例如2.0.0 beta的发行说明:
[BC中断]用户类的盐场现在无效。
如果要更新以外的所有内容
使用Composer,您可以将软件包名称作为参数传递给composer update
命令,例如:
composer update vendor1/package1 vendor2/package2
因此,您可以创建除用户捆绑包以外的所有软件包的长字符串。您可以从
中获得的所有排出包的列表composer show -o --name-only
命令输出。
选项-o
这里仅适用于可用于更新的过时软件包。
选项--name-only
显然仅显示无版本和描述的软件包名称。
所以,在类似于Unix的操作系统上,您可以运行
之类的东西composer show -o --name-only | grep -v 'friendsofsymfony/user-bundle' | xargs composer update
更多关于作曲家CLI