Php Symfony 3 FOSUSERBUNDLE更新损坏了我的应用程序

Php Symfony 3 FOSUSERBUNDLE更新损坏了我的应用程序,php,doctrine-orm,composer-php,symfony,fosuserbundle,Php,Doctrine Orm,Composer Php,Symfony,Fosuserbundle,我正在使用Symfony 3.0.9和FosUserBundle来构建我的应用程序。我最近做了一个composer更新,现在我无法通过UserManager或命令行创建用户。错误是完整性约束冲突:1048列“salt”不能为null。即使在构造函数方法中显式调用parent::u construct()时也会发生此错误,如下所示: /** * constructor. */ public function __construct() { parent::__construct();

我正在使用Symfony 3.0.9和FosUserBundle来构建我的应用程序。我最近做了一个composer更新,现在我无法通过UserManager或命令行创建用户。错误是
完整性约束冲突:1048列“salt”不能为null
。即使在构造函数方法中显式调用parent::u construct()时也会发生此错误,如下所示:

/**
 * constructor.
 */
public function __construct()
{
    parent::__construct();
}
如果调用setSalt方法,比如
$user->setSalt('87234hjjdwshjdsjkds')

解决此问题的所有努力都失败了,因此我开始密切关注我的composer update命令,这是一些输出:

更新依赖项(包括需要开发)
移除细枝/细枝(v1.24.1)
安装细枝/细枝(v1.28.2)
从缓存加载
删除symfony/polyfill util(v1.2.0)
安装symfony/polyfill-util(v1.3.0)
从缓存加载
...
移除symfony/polyfill intl icu(v1.2.0)
安装symfony/polyfill intl icu(v1.3.0)
从缓存加载
删除psr/日志(1.0.0)
安装psr/log(1.0.2)
从缓存加载
删除条令/缓存(v1.6.0)
安装条令/缓存(v1.6.1)
从缓存加载
...
删除条令/orm(v2.5.4)
安装条令/orm(v2.5.5)
从缓存加载
移除sensiolabs/安全检查器(v3.0.2)
安装sensiolabs/security checker(v4.0.0)
从缓存加载
删除nikic/php解析器(v2.1.0)
安装nikic/php解析器(v2.1.1)
从缓存加载
...
删除条令/条令迁移包(1.1.1)
安装条令/条令迁移包(v1.2.0)
从缓存加载
...
拆除phpspec/phpspec(2.5.1)
安装phpspec/phpspec(2.5.5)
从缓存加载
移除条令/数据固定装置(v1.2.1)
安装条令/数据装置(v1.2.2)
从缓存加载
更新friendsofsymfony/用户包开发主机(147ca68=>7261f7a)

如果您想更新除用户包以外的所有内容,请签出7261f7aa143b4bfdb0b7ddc5df208067fa7be698

使用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


如果您想更新除用户包之外的所有内容

使用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

1)如果您想在版本2中使用FOSUserBundle,则没有最终/稳定的版本-因此您必须始终期望在开发/主分支中进行突破性的更改

2) 几天后,至少有一个2.0.0测试版,我强烈建议在您的案例中使用:

3) 关于用户数据库模式有一些更改,例如删除了一些未使用的字段。关于盐田有一个变化——在你的例子中——据我所知,可能缺少的是更新你的数据库schame(如果你使用的是条令调用
bin/console条令:schema:update--force

有关详细信息,请参见2.0.0测试版的发行说明:

[BC break]用户类的salt字段现在可以为空。

1)如果您想在版本2中使用FOSUserBundle,则没有最终/稳定的版本-因此您总是需要在开发/主分支中进行中断更改

2) 几天后,至少有一个2.0.0测试版,我强烈建议在您的案例中使用:

3) 关于用户数据库模式有一些更改,例如删除了一些未使用的字段。关于盐田有一个变化——在你的例子中——据我所知,可能缺少的是更新你的数据库schame(如果你使用的是条令调用
bin/console条令:schema:update--force

有关详细信息,请参见2.0.0测试版的发行说明:


[BC break]用户类的salt字段现在可以为空。

谢谢Nikita。这是相当方便的,因为至少我可以选择保持所有其他最新的。关于如何更确切地确认这个bug并向开发人员提供详细信息,您有什么想法吗?好吧,您可以将包更新到下一个主要版本(v2.0.0-beta1,根据您的composer输出),因此主要意味着BC中断。正如这里所描述的-曾经有
[BC break]User类的salt字段现在可以为空
。如果您在显式设置salt时遇到问题,请提供不起作用的完整代码段。谢谢Nikita。这是相当方便的,因为至少我可以选择保持所有其他最新的。关于如何更确切地确认这个bug并向开发人员提供详细信息,您有什么想法吗?好吧,您可以将包更新到下一个主要版本(v2.0.0-beta1,根据您的composer输出),因此主要意味着BC中断。正如这里所描述的-曾经有
[BC break]User类的salt字段现在可以为空
。如果显式设置salt时遇到问题,请提供不起作用的完整代码段。是否更新了架构?就我所记得的,以前的更新删除了一些FOSUser实体字段,可能您试图在不再存在的字段上插入数据。谢谢@Bartoman,我将运行“composer”