首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工匠::调用(“迁移”)卡在列重命名中

问工匠::调用(“迁移”)卡在列重命名中
EN

Stack Overflow用户
提问于 2020-08-27 07:21:23
回答 1查看 79关注 0票数 0

在我目前的项目中,我有一个奇怪的行为。虽然我所有的迁移都在使用php artisan migrate的命令行中运行良好,但它们并不在Artisan命令中运行。

我们的目标是旋转一个新的DB并在那里运行迁移,所以我的代码如下所示:

代码语言:javascript
复制
 \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‘的列

但列仍然在那里,只是没有重新命名。

重命名迁移行:

代码语言:javascript
复制
    $table->renameColumn('parent_version_id', 'child_version_id');

如果我删除这一行,迁移将运行(当然不会重命名它将传递的列),并将在下一次重命名迁移时失败。

请记住,如果我手动更改env文件中的db并运行迁移,它们将顺利运行,不会出现任何问题,但我希望动态地创建并设置它,这就是我动态切换db的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-27 10:03:03

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

而不是:

代码语言:javascript
复制
\DB::connection('mysql')->reconnect();

所用:

代码语言:javascript
复制
\DB::purge('mysql');

这似乎也删除了旧的缓存,这是与理论冲突。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63611043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档