在更新postgres数据库方案后,我想使用迁移将所有现有数据迁移到迁移中的新表中,因此当我将其部署到主机时它将自动运行。
不幸的是,这不起作用。您将在下面找到我的代码。当我将完全相同的代码复制到工匠命令时,它可以工作。当我将其复制到手工艺匠之后,它就可以工作了。当我通过迁移运行它时,它不是。当DB#insert返回true时,没有任何内容插入数据库。 我还尝试从迁移中调用先前创建的有效artisan命令,但此后它不会插入任何数据。
我已在测试之间将表删减了。连接也正确,因为DB#getDefaultConnection返回正确的连接名,并且所有其他迁移均按预期进行。也是其中包含DB#insert的另一个迁移。
奇怪的事情:它在几周前就起作用了。在撰写本文时,我仅在VueJS前端中进行了更改,而在后端中没有进行更改。我也没有更新任何软件包或postgres数据库。我绝对不确定那里发生了什么。
也:没有违反约束。
public function up()
{
$platform_id = DB::table('platforms')->where('slug', '[...]')->first()->id;
DB::table('apps')->chunkById(20, function ($apps) use ($platform_id) {
$transformed = [];
foreach ($apps as $app) {
echo "{$app->app_id} - {$app->name}\n";
$transformed[] = [
'uuid' => (string)Uuid::generate(4),
'platform_id' => $platform_id,
'remote_id' => $app→app_id,
// [...]
];
}
echo "Inserting...\n\n";
DB::table('products')->insert($transformed);
});
// [...]
// The same thing again with another table.