0

所以我有一个自定义的包,我在我的项目中使用了很多迁移。该软件包包含很多迁移和种子。迁移不在laravel 5的服务器上运行?

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

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

当我运行php artisan migrate:refresh在本地,它的工作原理就像一个魅力和迁移的运行和表安装在DB 。但是当我在我的服务器上做同样的事情时,它说什么都不会迁移,这是令人困惑的,因为相同的配置在我的宅基地env而不是我的生产环境中工作。

有没有其他人遇到过类似的问题,或者对如何解决这个问题有任何想法?

+0

我没有在Laravel有关软件包的官方文档中找到有关迁移的任何信息,我认为您应该手动创建添加迁移的命令。 –

+0

可能有2种可能性,即迁移文件丢失或路径不正确,使用base_path()可以提供帮助。此外,如果文件存在且路径正确,脏的技巧可能会删除迁移表中的重要条目并再次运行迁移。 – iSensical

回答

0

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

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

0

难道这是您的服务器上的位置不同,或命令是从另一个地方执行?在最好的情况下,__DIR__不太可靠。

尝试通过改变线这个抽象代码:嗷和另一种可能性:

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

base_path()app_path()与Laravel代码:)

编辑中的特定文件位置打交道时是很方便的功能:您的迁移尚未添加到您的git存储库。对我而言,发生的次数往往比我承认的要多;-)

+0

我已经尝试了很多路径组合,包括'realpath()'和'base_path()'方法,它不起作用。在我尝试'__DIR__'路径上的'dd()'并且它很好。 – Rohan

+0

嗯......你的移民表说什么?你是否确认迁移是在该文件夹中? –