laravel 5 服务器上的迁移不是 运行?

Migrations not running on server in laravel 5?

所以我有一个自定义包,我在我的项目中使用它有很多迁移。该软件包包含大量迁移和种子。

在包的服务提供者中,我像这样加载迁移:

$this->loadMigrationsFrom(__DIR__ . '/database/migrations/');

当我在本地 运行 php artisan migrate:refresh 时,它就像一个魅力,迁移是 运行 并且表安装在数据库中。但是当我在我的服务器上做同样的事情时,它没有说要迁移这令人困惑,因为相同的配置适用于我的宅基地环境而不是我的生产环境。

有没有其他人遇到过类似的问题或知道如何解决这个问题?

如果您使用的是Git,请检查服务器上的分支是否与开发环境上的分支相同。

例如,您可能在服务器的 master 分支上(默认情况下),并且您在 development 分支中完成了所有开发。因此,迁移将仅在 development 分支中可见。

会不会是你们服务器的位置不一样,或者命令是从别的地方执行的? __DIR__ 在最好的情况下也不太可靠。

尝试通过将行更改为以下内容来抽象您的代码:

$this->loadMigrationsFrom(base_path() . '/database/migrations/');

base_path()app_path() 在处理 Laravel 代码中的特定文件位置时是很方便的函数 :)

编辑:哦,还有另一种可能性:您的迁移尚未添加到您的 git 存储库中。发生在我身上的次数比我愿意承认的要多 ;-)

也许应该是其中之一。

$this->loadMigrationsFrom(__DIR__ . '/../database/migrations/');

$this->loadMigrationsFrom(__DIR__ . '/./database/migrations/');