如何在 laravel 中为特定环境运行迁移

2022-08-30 16:37:30

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

我用以下工具制作了一个迁移文件:

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

它像预期的那样在数据库/迁移中创建了一个文件,我对此进行了一些修改,并使用

artisan migrate --env=local

但我得到的回复是"Nothing to migrate"

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

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

所以我现在有点卡在这里去哪里


答案 1

您需要在执行迁移命令之前指定环境。

artisan --env=local migrate

“运行”显示命令要遵循的格式。artisan help

artisan help

Usage:
  [options] command [arguments]

答案 2

我想出了一个解决方案来运行不同的数据库。基本上,该命令不起作用。但是我们可以在 中定义一个新的连接字符串。例如:migrateartisan migrate --env=localconfig\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_',
    ],

并指定我们何时像这样运行:--databaseartisan migrate

php artisan migrate --database=mysql_testing

希望这有助于:)


推荐