为了账号安全,请及时绑定邮箱和手机立即绑定

Artisan::call('migrate') 陷入列重命名中

Artisan::call('migrate') 陷入列重命名中

PHP
不负相思意 2023-11-03 20:28:39
我在当前正在进行的项目中出现了奇怪的行为。虽然我的所有迁移都可以通过命令行正常工作,但php artisan migrate它们并不通过 Artisan 命令运行。目标是旋转一个新的数据库并在那里运行迁移,因此我该部分的代码如下所示: \DB::statement("CREATE DATABASE TESTDB");\DB::disconnect('mysql');\Config::set('database.connections.mysql.database', 'TESTDB');\DB::connection('mysql')->reconnect();\Artisan::call('migrate',    [        '--database' => 'mysql',        '--path'     => 'database/migrations'    ]);数据库已成功创建,因此没有问题,并且迁移开始运行,但在与重命名列(声称该列不存在)有关的迁移中总是失败。错误信息“表上没有名称为“parent_version_id”的列但该专栏仍然存在,只是没有重命名。重命名迁移线:    $table->renameColumn('parent_version_id', 'child_version_id');如果我删除此行,迁移将运行(当然不会重命名它将仅通过的列),并且在下一次重命名迁移中将失败。请记住,如果我手动更改环境文件中的数据库并运行迁移,它们将运行顺利,没有任何问题,但我希望动态创建和设置它,这就是我动态切换数据库的原因。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

显然,修复是替换 1 行代码。

代替 :

\DB::connection('mysql')->reconnect();

用过的:

\DB::purge('mysql');

这似乎也删除了与学说相冲突的旧缓存。


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信