24

我正在使用 laravel (Laravel 4) 设置一个新应用程序,并且在通过迁移设置数据库时遇到了一些问题。

我制作了一个迁移文件:

artisan migrate:make --table="jobs" --create jobs

它按预期在数据库/迁移中创建了一个文件,我对此做了一些修改,然后使用

artisan migrate --env=local

但我得到了答复"Nothing to migrate"

如果我尝试在没有 的情况下运行--env=local,它会使用我们不想使用的配置文件夹(而不是本地/暂存/生产文件夹)中的 database.php,因为它不是特定于环境的。

我的第一个想法是好的,也许我需要在migrate:make调用上加上 env 标志,所以我尝试了,但得到一个错误,说它无法创建迁移文件。然后我认为无论如何进行基于 env 的迁移是没有意义的……它们应该是通用的,并且只是在每个 env 的基础上运行,所以最后,所有环境都使用相同的迁移脚本。

所以我现在有点不知道从这里去哪里

4

4 回答 4

32

您需要在 migrate 命令之前指定环境。

artisan --env=local migrate

运行artisan help向您显示命令遵循的格式。

artisan help

Usage:
  [options] command [arguments]
于 2012-11-21T10:52:21.053 回答
4

我想出了一个migrate针对不同数据库运行的解决方案。基本上,该命令artisan migrate --env=local不起作用。但是我们可以在config\database.php. 例如:

<?php
   'mysql_testing' => [
        'driver'    => 'mysql',
        'host'      => env('DB_TESTING_HOST'),
        'database'  => env('DB_TESTING_DATABASE'),
        'username'  => env('DB_TESTING_USERNAME'),
        'password'  => env('DB_TESTING_PASSWORD'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'prefix_',
    ],

并指定--database我们artisan migrate像这样运行的时间:

php artisan migrate --database=mysql_testing

希望这可以帮助 :)

于 2016-07-17T13:39:58.490 回答
3

解决。

解决方案是简单地编辑 local/database.php(或 production/database.php 等),确保迁移路径变量指向migrate:make创建迁移文件的位置,只需更改

'application' => __DIR__.'/../database/migrations',

'application' => DIR.'/../../database/migrations',
于 2012-11-21T11:51:41.353 回答
1

如果在运行迁移后修改迁移,首先需要回滚迁移。

php artisan migrate:rollback

继续运行,直到您更改的迁移被回滚。或者,您可以使用重置整个架构

php artisan migrate:reset

但是你需要像往常一样调用你的迁移来更新它们。

php artisan migrate

最后,您可以通过调用重置然后迁移

php artisan rebuild

另请注意,在迁移完成后修改迁移通常是一种不好的做法,除非您真的只是做了它。部署后,您不应修改它,而是创建一个新的迁移文件。

希望这可以帮助。

编辑:我不知何故错过了 Laravel 4 指标。我相信这些命令中的大多数仍然有效,但您可能需要调整。

于 2012-11-21T10:54:15.247 回答