【问题标题】:Alice Data Fixtures Errors on WindowsWindows 上的 Alice Data Fixtures 错误
【发布时间】:2023-03-16 15:14:01
【问题描述】:
当我从 git 拉/克隆这个项目并运行这个命令时,在我的 Windows 上
bin/console doctrine:fixtures:load
小心,数据库将被清除。 y/N 是否要继续?y
清除数据库 > 加载 AppBundle\DataFixtures\ORM\RequestFixture\RequestFixture
[Symfony\Component\Debug\Exception\ContextErrorException]
注意:未定义的偏移量:-5
它给了我一个错误。
但是当我在我的 Mac 中执行此操作时,一切都运行良好。
【问题讨论】:
标签:
git
symfony
nelmio-alice
【解决方案1】:
我在使用 XAMPP、PHP 7.2.0 和 Symfony 4 的 Windows 上遇到了同样的问题。我指出的错误是 vendor\fzaninotto\faker\src\Faker\Provider\Base.php。在Base::randomElements里面有如下语句:
$num = mt_rand(0, $highKey);
看起来$num 用于从传入Base::randomElements 的假数据数组中选择一个随机项,然后将其添加到返回的$elements 数组中。
在您的情况下,对mt_rand 的调用是返回-5。偏移量-5 未在期望正数作为偏移量的数组上定义。
我发现mt_rand(0, $highKey) 实际上返回了一个介于-$highKey/2 和+$highKey/2 之间的数字。此外,每次调用该方法时,它总是生成完全相同的数字。
我无法弄清楚为什么mt_rand(0, $highKey) 会产生负数。可能是生成器未正确播种,也可能是 mt_rand 的实现中的错误,但目前这些只是疯狂的猜测。